好的,我知道这个话题已经多次得到解决,但我所看到的并没有帮助我。我在标题中收到错误,我不确定如何修复错误。这是我的代码:
def loadRecords():
f = open("stu.txt", "r")
students = f.readlines()
f.close()
return students
def addStudent():
n = input("Enter student's name: ")
ex1 = input("Enter Exam 1 grade: ")
ex2 = input("Enter Exam 2 grade: ")
ex3 = input("Enter Exam 3 grade: ")
return n + " " + ex1 + " " + ex2 + " " + ex3 + "\n"
def displayStudents(students):
for record in students:
n, ex1, ex2, ex3 = record.split(",")
ex1 = int(ex1)
ex2 = int(ex2)
ex3 = int(ex3)
print("%-10s %5s %5s %5s" % (n, ex1, ex2, ex3))
def displayAvg(students):
n = 1
for record in students:
n, ex1, ex2, ex3 = record.split(",")
ex1 = int(ex1)
ex2 = int(ex2)
ex3 = int(ex3)
avg = (ex1 + ex2 + ex3) / 3
print("%-10s %5s" % (n, round(avg, 1)))
n += 1
def saveRecords(students):
f = open("stu.txt", "w")
f.writelines(students)
f.close
def main():
students = loadRecords()
while True:
print("""
Program Options.
1.) Display all contacts
2.) Create new contact
3.) Display Averages
4.) Save and exit
""")
option = input("Enter 1, 2, or 3: ")
print()
if option == "1":
displayStudents(students)
elif option == "2":
newRecord = addStudent()
students.append(newRecord)
elif option == "3":
displayAvg(students)
elif option == "4":
saveRecords(students)
break
else:
print("Not happening")
main()
这是收到的错误:
Traceback (most recent call last):
File "C:/Python33/Program 4/pro4.py", line 65, in <module>
main()
File "C:/Python33/Program 4/pro4.py", line 53, in main
displayStudents(students)
File "C:/Python33/Program 4/pro4.py", line 16, in displayStudents
n, ex1, ex2, ex3 = record.split(",")
ValueError: need more than 1 value to unpack
这是我正在使用的文件,如果你想运行代码,请使用记事本。
sam wilson,98,80,73
sue green,92,98,74
sue adams,89,89,92
ron harris,90,87,100
linda tyler,76,72,88
dave smith,72,91,75
steve davis,88,92,84
答案 0 :(得分:4)
您的文件中可能至少有一个空行(通常是最后一行);明确地测试:
for record in students:
if not record.strip():
continue
n, ex1, ex2, ex3 = record.split(",")
您可能希望查看csv
module来阅读您的学生记录;你仍然需要跳过空行,但是为你处理逗号分裂。