【问题标题】:Dictionaries/list: Creating a function that prints "name of student" if student has completed all "five tests" with a "grade" >= 2?字典/列表:如果学生已完成所有“五项测试”且“成绩”>= 2,则创建一个打印“学生姓名”的函数?
【发布时间】: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


    【解决方案1】:

    试试这个代码:

    def print_finished(filename):
    students = {}
    test_name = ['A', 'B', 'C', 'D', 'E']
    for line in open(filename):
        entry = line.rstrip().split(", ")
        name = entry[0]
        test = entry[1]
        grade = int(entry[2])
        if grade >= 2 and test in test_name:
            students[name] = grade
            print(students)
            print("Test is: ", test)
    
    gradelist = r"grades.txt"
    print_finished(gradelist)
    

    【讨论】:

      猜你喜欢
      • 2021-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多