在这种情况下如何打破循环?
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}")
我刚刚编写了一个程序,可以给出通过和失败的学生人数、分数、字母成绩和平均 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}")