对于我的Python类入门,我们需要制作一个使用while循环的简化程序。该程序应该进行评分,然后在用户输入完评分后,它将打印平均,最高和最低评分。我的教授还建议我们将任何负数作为输入结束的触发条件。
我尝试使用各种类型的循环使程序停止接受输入,但是在输入负数时似乎并没有停止。
grades = []
print('When done inputting grades input any negative number.')
grade = int(input('Input grades here: '))
while (grade >= 0):
grades.append(grade)
else:
avg_grade = sum(grades) / len(grades)
print('Average grade: ' , avg_grade)
print('Lowest grade: ' , min(grades))
print('Highest grade: ', max(grades))
所以基本上,这里唯一的问题是我无法弄清楚如何使其停止接受输入,当我输入时,它似乎可以工作。负数作为第一个输入,但我不明白为什么它不会结束循环。
答案 0 :(得分:2)
while
循环永远不会修改grade
,因此循环永远不会结束。您需要在循环内请求输入。
与其复制要求输入的代码,不如在循环内执行一次。当您获得终止值时,请使用break
停止循环。
无需使用else:
。如果您有一个循环,当条件失败时该循环可以运行完成,或者以break
提前终止,并且要在运行完成时执行一些特殊的操作,则可以使用该函数。但是您的循环总是在相同的条件下结束。
while True:
grade = int(input('Input grades here: '))
if grade == 0:
break
avg_grade = sum(grades) / len(grades)
print('Average grade: ' , avg_grade)
print('Lowest grade: ' , min(grades))
print('Highest grade: ', max(grades))
答案 1 :(得分:0)
您正在做的只是输入一次。您需要在每次循环迭代时获取输入。最好的方法是在grade = int(input('Input grades here: '))
循环内添加while
。这样,当您第一次进入循环时,它将检查您输入的第一个数字是否为正,然后每次进行迭代时,都会再次检查您的新输入是否为正。如果不是,那么它将仅退出while
循环,而不会再次进行迭代。另外,else
语句通常仅用于if
和try
语句,因此您在这里不需要它。只需取消缩进即可。
grades = []
print('When done inputting grades input any negative number.')
grade = int(input('Input grades here: '))
while (grade >= 0):
grades.append(grade)
grade = int(input('Input grades here: '))
avg_grade = sum(grades) / len(grades)
print('Average grade: ' , avg_grade)
print('Lowest grade: ' , min(grades))
print('Highest grade: ', max(grades))