Append 是添加总和而不是添加到列表 python

Append is adding the sum instead of adding to a list python

我尝试追加,但每当我尝试在 main() 中打印它时,它会打印平均值但相加。

def letter_grade(test_score):
    if int(test_score) >= 90:
        grade = 'A'
    elif int(test_score) >= 80:
        grade = 'B'
    elif int(test_score) >= 70:
        grade = 'C'
    elif int(test_score) >= 60:
        grade = 'D'
    else:
        grade = 'F'
    return grade


def calc_avg_grade(test_score):
    average = []
    func_sum = sum(test_score)
    avg = func_sum/5.00
    average.append(avg)
    average.reverse()
    return average


def main():
    grades = []
    i = 0
    outfile = open('studentgrades.txt', 'w')
    while i < 4:
        name = input("Enter the student name: ")
        for x in range(5):
            score = float(input("Enter number grade: "))
            grades.append(score)
            gradle = letter_grade(score)
            print(str(score) + ' - ' + gradle)
        avg_grade = calc_avg_grade(grades)
        avgg = avg_grade
        print(name + "'s average grade is: " + str(avgg))
        outfile.write(name + ', ' + str(avg_grade) + "\n")
    txtcontents = outfile.read()
    print(txtcontents)


if __name__ == "__main__":
    main()

它运行我遇到问题的附加部分是: print(name + "'s average grade is: " + str(avgg)) 这是 def main()。

我认为你没有重新初始化 grades:

def main():
    # grades = []  # Not Here!
    i = 0
    outfile = open('studentgrades.txt', 'w')
    while i < 4:
        name = input("Enter the student name: ")
        grades = []  # here instead
        for x in range(5):
            score = float(input("Enter number grade: "))
            grades.append(score)
            gradle = letter_grade(score)
            print(str(score) + ' - ' + gradle)
        avg_grade = calc_avg_grade(grades)
        avgg = avg_grade
        print(name + "'s average grade is: " + str(avgg))
        outfile.write(name + ', ' + str(avg_grade) + "\n")
    txtcontents = outfile.read()
    print(txtcontents)

这样您就可以为每个学生得到一个新的空值 gradesavg_grade 将是该学生的正确平均值。