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@python.org
http://mail.python.org/mailman/listinfo/tutor