Python循环测试分数

时间:2014-02-16 22:44:25

标签: python

我正在尝试创建一个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()

5 个答案:

答案 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()