在这种情况下如何打破循环?

How do I break a loop in this situation?

我刚刚编写了一个程序,可以给出通过和失败的学生人数、分数、字母成绩和平均 class 成绩。我认为代码不起作用,因为它只通过 collect() 而不是 calculate() 和 passer()。有谁知道我如何连接这三个功能?

祝大家今天愉快!! :)

我的代码:

list_grade = []
list_score = []
def collect():
    while True:
        score = input("Student's score: ")
        if score == "done":
        average(list_grade)
            break
        else:
            list_grade.append(float(score))
def average(list_grade):
    average_grade = sum(list_grade)/len(list_grade)
    calculate()
def calculate():
    for element in list_grade:
        if element >= 80:
            list_score.append("A")
        elif element >= 70:
            list_score.append("B")
        elif element >= 60:
            list_score.append("C")
        elif element >= 50:
            list_score.append("D")
        elif element >= 40:
            list_score.append("F")
        passer()
def passer():
    s_fail = 0
    s_pass = 0    
    for element in list_score:
        if element == 'F':
            s_fail += 1
        else:
            s_pass += 1
collect()

print ("Number of students that failed: " + s_fail)
print ("Number of students that passed: " + s_pass)
print ("Marks: " + list_grade)
print ("Letter grades: " + list_score)
print ("Average class grade: " + average_grade)

我已经修复了你的代码。问题是你想打印出 passer()average() 函数的值。为了在函数之外执行此操作,您必须使用 global 关键字。它将使这些变量在整个文件中可用。

def passer():
    global s_fail, s_pass
    s_fail = 0
    s_pass = 0
    for element in list_score:
        if element == 'F':
            s_fail += 1
        else:
            s_pass += 1
def average(list_grade):
    global average_grade
    average_grade = sum(list_grade)/len(list_grade)
    calculate()

下一个问题是 print() 函数。您不能打印 int 类型的值。您必须将代码更改为以下内容

print ("Number of students that failed: " + str(s_fail))
print ("Number of students that passed: " + str(s_pass))
print ("Marks: " + str(list_grade))
print ("Letter grades: " + str(list_score))
print ("Average class grade: " + str(average_grade))

但是,您可以打印 int 类型值,但您必须使用 f string 并且代码看起来像

print (f"Number of students that failed: {s_fail}")
print (f"Number of students that passed: {s_pass}")
print (f"Marks: {list_grade}")
print (f"Letter grades: {list_score}")
print (f"Average class grade: {average_grade}")