IT 117: Intermediate Scripting
Homework 3


Due Sunday, September 24th at 11:59 PM

Deliverables

There is one deliverable for this assignment: It must be in an hw3 directory, which you must create inside a hw directory inside you it117 directory.

Make sure the script obeys all the rules in the Script Requirements page.

To test this script you must copy into your hw2 directory the file courses.txt from /home/ghoffman/course_files/it117_files.

Specification

This script reads in class data from a file and creates a dictionary.

It then prints the data from the dictionary.

The script has the following functions

class_tuple_create

This function has the following header
def class_tuple_create(filename):
The function reads in a file with four fields of data about a class.

The fields are
	Course ID	Room number	Instructor	Start time
The function must print an error message if the file cannot be opened for any reason.

The function should read in each line of the file and split it into a list of 4 elements.

It should add the information in the line into a dictionary, where the key is the course number and the value is a tuple consisting of the room number, the instructor and the start time.

The function should return this dictionary when it has read all the lines in the file.

print_classes

This function has the following header
def print_classes(class_info):
It should print the following table header
ID	Room		Instr	Start
Then it should print out the data for each class in alphabetical order by Class ID.

Test Code

The script must contain the following test code at the bottom of the file
class_information = class_tuple_create('xxxxx')
class_information = class_tuple_create('courses.txt')
print_classes(class_information)

Suggestions

Write this script in stages, testing your script at each step
  1. Create a file with the hashbang line, the test code and each function. The body of the function should be the Python statement pass which does nothing but it stops syntax errors
  2. Remove the pass statement in class_tuple_create and replace it with code that opens a file for reading. If the file cannot be opened for reading, the code should print an error message and not do any further processing of the file.
  3. Using a for loop print each line of the file.
  4. Split the line into a list and print the list.
  5. Define the variable course_id and set its value to the first element of the list. Print the course_id.
  6. Create the variable class_data and set its value to the tuple consisting of the remaining fields in the list. Print course_id and class_data.
  7. Create an empty dictionary at the top of the function. With each line of the file create an entry for the class where the key is the course ID and the value is the tuple. Outside the loop but still inside the function, print this dictionary.
  8. Remove all print statements from class_tuple_create. Return the dictionary created by this function. Remove the pass statement from print_classes and replace it with a statement that prints the parameter.
  9. Using a for loop, print the class IDs in sorted alphabetical order.
  10. Use the class ID to get the tuple with class data. Print the class ID and tuple for each class.
  11. Print the class ID and each element of the tuple with a tab in between.
  12. Print the labels for each column and a line of dashes underneath it.

Output

The output should look something like this

Error: Unable to open xxxxx
ID  Room    Instr   Start
-----------------------------------
CM241   1411    Lee 13:00
CS101   3004    Haynes  8:00
CS102   4501    Smith   9:00
CS103   6755    Rich    10:00
NT110   1244    Burke   11:00