满足其参数时,其他循环似乎没有触发吗?

时间:2019-10-12 01:17:00

标签: python python-3.x

对于我的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))

所以基本上,这里唯一的问题是我无法弄清楚如何使其停止接受输入,当我输入时,它似乎可以工作。负数作为第一个输入,但我不明白为什么它不会结束循环。

2 个答案:

答案 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语句通常仅用于iftry语句,因此您在这里不需要它。只需取消缩进即可。

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))