[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