IT 117: Intermediate Scripting
Homework 3


Due Sunday, September 23rd 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 hw3 directory the file courses.txt from /home/ghoffman/course_files/it117_files.
$ cp  /home/ghoffman/course_files/it117_files/courses.txt  .

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.

The data for each course should align with the labels.

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 the file hw4.py and copy the function header for class_tuple_create into it.
    For the body of this function enter pass. Copy the function header for print_classes into the script.
    Again use pass as the function body.
    Copy the test code above into the script.
    Make the script executable and run it.
    You should see nothing.
    If you get an error message, fix the problem before proceeding.
  2. Remove the pass statement in class_tuple_create.
    Create a file object so you can read the file given as a parameter.
    Write an error message if the file cannot be opened.
    Run the script.
    You should see one error message.
  3. Using a for loop print each line of the file.
    Run the script and fix any errors.
  4. Remove the print statement you just created.
    In it's place use the split string method to create a list of words in the line.
    Print the list of words.
    Run the script and fix any errors.
  5. Remove the print statement you just created.
    Define the variable course_id and set its value to the first element of the list.
    Print the value of this variable.
    Run the script and fix any errors.
  6. Create the variable class_data and set its value to a tuple consisting of the remaining fields in the list.
    You might want to use a slice to do this and tuple conversion function to do this.
    Print course_id and class_data.
    Run the script and fix any errors.
  7. Create an empty dictionary at the top of the function.
    Inside the for add an entry to the dictionary where the key is the class ID and the value is the tuple.
    Outside the loop but still inside the function, print this dictionary.
    Run the script and fix any errors.
  8. Remove all print statements from class_tuple_create.
    Have the function return the dictionary you just created.
    Remove the pass statement from print_classes and replace it with a statement that prints the parameter.
    Run the script and fix any errors.
  9. Using a for loop, print the class IDs in sorted alphabetical order.
    Run the script and fix any errors.
  10. Inside the loop use the create the variable course_data and assign it the tuple associated with each class ID.
    Print the class ID and tuple for each class.
    Run the script and fix any errors.
  11. Change the print statement so that it prints the class ID and each element of the tuple with a Tab between each value.
    Run the script and fix any errors.
  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