【发布时间】:2021-05-03 17:21:13
【问题描述】:
这是我的编程任务:
文件“grades.txt”包含有关学生参加的测试和达到的成绩的数据。文件中的每一行都包含学生的姓名、学生参加的测试和取得的成绩。您可以假设没有两个学生同名。此外,如果达到及格成绩,学生将无法重新参加考试。
编写一个函数 print_finished(filename),它以文件名作为参数并打印所有已完成学业的学生的姓名。如果已完成所有测试并且在每项测试中至少获得 2 分,则该学生已完成学业。
例如,在“grades.txt”中。文件中,学生“Magnus”的成绩为:
Magnus, A, 7
Magnus, D, 0
Magnus, D, 0
Magnus, D, 12
Magnus, B, -2
Magnus, C, 12
Magnus, B, -2
Magnus, B, 4
Magnus, E, 4
自从他重新参加考试 B 和 D 并通过了这两项考试后,“马格努斯”已经完成学业。 “grades.txt”文件中的另一个“学生”“Noah”在他们的 D-test 重考中得到了 -2,因此还没有完成学业。
--- 我的代码和问题 ---
如果所有最终测试(包括重考)的成绩都高于或等于 2,我需要一个函数将文件转换为字典/列表(不确定是哪个)打印出“学生”的姓名。
我已尝试使用此代码:
def print_finished(filename):
students = {}
for line in open(filename):
entry = line.rstrip().split(", ")
name = entry[0]
grade = int(entry[2])
if grade >= 2:
students[name] = grade
for student,grade in sorted(students.items()):
print(student, grade)
gradelist = r"grades.txt"
print_finished(gradelist)
不幸的是,我尝试的这个函数只考虑了学生通过测试的第一个实例。因此,如果学生通过了他们的第一次考试,他们就会在列表中,但如果学生第一次考试失败但在重考中通过了,他们就不包括在内。
我需要做什么才能让函数打印所有通过期末考试且成绩大于或等于 2 的学生的姓名?
【问题讨论】:
标签: python list file dictionary txt