我正在尝试创建一个python程序来计算测试分数的平均值,并在输入-1时终止。但是,我无法忽略超过100的测试分数。我希望程序能够得分90,80,105,84,-1并计算第1,第2和第4的平均值跳过第3个分数,因为它超过100并以-1
结束这就是我所拥有的:
def main():
sum = 0.0
count = 0
x = input("Enter a number (enter -1 to terminate) >> ")
while x >= 0:
sum = sum + x
count = count + 1
if x>100:
break
x = input("Enter a number (enter -1 to terminate) >> ")
print "\nThe average of the numbers is", sum / count
return
main()
答案 0 :(得分:1)
您可以在列表中添加数字:
nums = []
...
if x <= 100:
nums.append(x)
那么平均值就是:
sum(nums) / float(len(nums))
答案 1 :(得分:0)
我可能会收集所有条目:
entries = list()
while True:
entry = input("Enter a test score (-1 to exit): ")
if entry == -1: break
entries.append(entry)
# we only get here after the user enters -1
entries = [entry for entry in entries if 0 <= entry <= 100]
entries_sum = sum(entries)
entries_average = entries_sum / len(entries)
答案 2 :(得分:0)
你的语句if x > 100: break
导致while循环执行终止,这不是你想要的。你希望它继续前进而忽略这个数字。
所以你可以这样做:
while x >= 0:
if x <= 100:
# Do the calculations
或者,使用Python的continue
关键字,它会自动启动父循环的下一次迭代。就像Martjin指出的那样,你必须在if
声明的正文中添加另一个请求:
while x >= 0:
if x > 100:
x = input("Enter a number (enter -1 to terminate) >> ")
continue
# Do the calculations
答案 3 :(得分:0)
你已经在休息时添加了总和和计数:
sum = sum + x
count = count + 1
if x>100:
break # too late
此外,break
结束循环。你不希望这样。所以只需避免总和和计数,但保持循环和输入:
while x >= 0:
if x <= 100:
sum = sum + x
count = count + 1
x = input("Enter a number (enter -1 to terminate) >> ")
答案 4 :(得分:0)
在您测试if x>100
时,您已经增加了计数并添加到总和中。第二个问题是你在这种情况下做了什么 - 目前你正在跳出while
循环,你要做if x == -1
而不是if x>100
!
您只需将break
更改为sum -= x ; count -= 1
即可。但是,开始时只添加x
更合乎逻辑:
while x >= 0:
if x <= 100:
count += 1
sum += x
x = input()