[Tutor] I've run into a jam on the exercise on file I/O

Nathan Pinno falcon3166 at hotmail.com
Mon Aug 1 22:52:16 CEST 2005


Maybe I should use assignments instead?
  ----- Original Message ----- 
  From: Adam Bark 
  To: Nathan Pinno 
  Cc: tutor at python.org 
  Sent: Monday, August 01, 2005 2:47 PM
  Subject: Re: [Tutor] I've run into a jam on the exercise on file I/O


  >>> max_points = [25,25,50,25,100]
  >>> assignments = ['hw ch 1','hw ch 2','quiz   ','hw ch 3','test']
  >>> students = {'#Max':max_points}
  >>> students
  {'#Max': [25, 25, 50, 25, 100]}

  The problem is the key in students is a list not an integer.


  On 8/1/05, Nathan Pinno <falcon3166 at hotmail.com > wrote:
    Hey all,
    I've seem to run into a jam while working on the exercise on file I/O.
    Here's the error:
    Filename to save: university.txt
    Traceback (most recent call last):
      File "D:\Python22\grades.py", line 99, in ?
        save_grades(students,filename)
      File "D:\Python22\grades.py", line 51, in save_grades
        out_file.write(x+","+max_points[x]+"\n")
    TypeError: sequence index must be integer

    And the code:
    max_points = [25,25,50,25,100]
    assignments = ['hw ch 1','hw ch 2','quiz   ','hw ch 3','test']
    students = {'#Max':max_points}

    def print_menu():
        print "1. Add student"
        print "2. Remove student"
        print "3. Print grades"
        print "4. Record grade"
        print "5. Load Grades"
        print "6. Save Grades"
        print "9. Exit"

    def print_all_grades():
        print '\t',
        for i in range(len(assignments)):
            print assignments[1],'\t',
        print
        keys = students.keys()
        keys.sort()
        for x in keys:
            print x,'\t',
            grades = students[x]
            print_grades(grades)

    def print_grades(grades):
        for i in range(len(grades)):
            print grades[i],'\t\t',
        print

    def choice():
        return int(raw_input("Menu Choice: "))

    def school():
        return raw_input("Student: ")

    def load_grades(students,filename):
        in_file = open(filename, "r")
        while 1:
            in_line = in_file.readline()
            if in_line == "":
                break
            in_line = in_line[:-1]
            [students,max_points] = string.split(in_line,",")
            max_points[students] = grade
        in_file.close()

    def save_grades(students,filename):
        out_file = open(filename, "w")
        for x in students.keys():
            out_file.write(x+","+max_points[x]+"\n")
        out_file.close

    print "Grade Tracking Program."
    while 1:
        print_menu()
        menu_choice = choice()
        if menu_choice == 1:
            print "Add student"
            name = school()
            students[name] = [0]*len(max_points)
        elif menu_choice == 2:
            print "Remove student"
            name = school()
            if students.has_key(name):
                del students[name]
            else:
                print "Student: ",name," not found."
        elif menu_choice == 3:
            print_all_grades()

        elif menu_choice == 4:
            print "Record Grade"
            name = school()
            if students.has_key(name):
                grades = students[name]
                print "Type in the number of the grade to record"
                print "Type in a 0 (zero) to exit"
                for i in range(len(assignments)):
                    print i+1,' ',assignments[i],'\t',
                print
                print_grades(grades)
                which = 1234
                while which != -1:
                    which = int(raw_input("Change which Grade: "))
                    which = which-1
                    if 0 <= which < len(grades):
                        grade = int(raw_input("Grade: "))
                        grades[which] = grade
                    elif which != -1:
                        print "Invalid Grade Number"
                else:
                    print "Student not found"
        elif menu_choice == 5:
            filename = raw_input("Filename to load: ")
            load_grades(students,filename)
        elif menu_choice == 6:
            filename = raw_input("Filename to save: ")
            save_grades(students,filename)
        elif menu_choice == 9:
            break
        else:
            print "That's not a choice!"
    print "Goodbye."

    What's the problem, and how is it fixed?

    Thanks,
    Nathan Pinno,
    Crew, Camrose McDonalds and owner/operator of Woffee

    _______________________________________________
    Tutor maillist  -  Tutor at python.org
    http://mail.python.org/mailman/listinfo/tutor





-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20050801/896c6b07/attachment.htm


More information about the Tutor mailing list