Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Else循环不';当遇到它的';参数?_Python_Python 3.x - Fatal编程技术网

Python Else循环不';当遇到它的';参数?

Python Else循环不';当遇到它的';参数?,python,python-3.x,Python,Python 3.x,对于Python类的介绍,我们需要制作一个利用while循环的简单程序。该程序应该采取的成绩,然后一旦用户完成输入成绩,它将打印平均,最高和最低的成绩。我的教授还建议我们只使用任何负数作为输入结束的触发器 我尝试过使用各种类型的循环来让程序停止接收输入,但当输入负数时,它似乎不会停止 grades = [] print('When done inputting grades input any negative number.') grade = int(input('Input grades

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

所以基本上这里唯一的问题是我不知道如何让它停止输入,当我输入一个。负数作为第一个输入,但我无法理解为什么它不会结束循环。

循环从不修改
等级,因此循环永远不会结束。您需要在循环中请求输入

不要复制请求输入的代码,只需在循环内执行一次即可。当获得终止值时,使用
break
停止循环

无需使用
其他:
。当您有一个循环,该循环可以在条件失败时运行到完成,也可以通过
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))

您所做的是只获取一次输入。每次循环迭代时都需要获取输入。最好的方法是在
while
循环中添加
grade=int(input('input grades here:'))
。这样,当您第一次进入循环时,它会检查您输入的第一个数字是否为正,然后每次迭代时,它会再次检查您的新输入是否为正。如果不是,则它将退出
循环,而不会再次迭代。另外,
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))

我相信你应该在while循环中有
grade=int(输入('input grades here:'))
,否则你只取一个值。循环需要包含所有重复发生的事情。您希望重复请求输入,这样就进入了循环。问题不在于你的代码不会“停止接受输入”;恰恰相反,问题是它一直使用给定的一个输入,而不是另一个输入。谢谢!这是一种比我的教授更简单、更容易理解的解释方式。我能弄清楚!