好的,所以我正在尝试学习 Python。几个学期前,我有一个朋友上过 Python 课程的介绍,他把他所有的旧作业都给了我。我有一个特别烦人的问题,我认为应该很简单,但似乎无法弄清楚我的问题出在哪里。看看大家怎么想的。
该程序应该从名为 grades.txt 的文件中读取。这是文件:
2
John Doe
82
100
57
0
Jane Smith
91
12
45
81
0
这个文件的格式是:第一行是学生人数。然后是学生的名字和他们的成绩。零表示学生成绩列表的结束。我知道,我知道……这样做没有多大意义,但这就是它的阅读方式。
无论如何,这是我到目前为止为它编写的代码......
#!/usr/bin/env python
class students():
def __init__(self, fname='', lname='', grades=[]):
self.firstName = fname
self.lastName = lname
self.gradeBook = grades
def lineCheck(lineText):
try:
int(lineText)
return True
except ValueError:
return False
inFile = "grades.txt"
outFile = "summary.txt"
count = 0
numStudents = 0
studentList = []
check = False
with open(inFile, "r") as file:
for line in file:
if(count == 0):
numStudents = line.strip()
else:
lineRead = line.strip()
check = lineCheck(lineRead)
if(check == False):
studentName = lineRead.split()
fName = studentName[0]
lName = studentName[1]
temp = students(fName, lName)
else:
if(lineRead != '0'):
temp.gradeBook.append(lineRead)
elif(lineRead == '0'):
studentList.append(temp)
count += 1
file.close()
for student in studentList:
print student.firstName + " " + student.lastName
print student.gradeBook
使用此代码,我的预期输出是在最终 for 循环中的程序末尾。我希望看到这样的事情:
John Doe
['82', '100', '57']
Jane Smith
['91', '12', '45', '81']
但是,我得到的输出是这样的:
John Doe
['82', '100', '57', '91', '12', '45', '81']
Jane Smith
['82', '100', '57', '91', '12', '45', '81']
我已经盯着这个太久了,我觉得这很简单。但由于我是 python 新手,还没有完全习惯它的所有细微差别,也许有经验的人可以找出这里发生的事情。我真的很感激你能给我的任何帮助。谢谢。