简单的蟒蛇,而循环麻烦

时间:2015-05-27 01:46:37

标签: python

所以我只是想知道为什么我的下面的代码没有按预期运行,我希望它在给定奇数时继续将奇数值添加到奇数计数,同样与平均值一样。但无论我放什么,它只是将它添加到奇数。建议?

odd_value = 0
even_value = 0

x = int(input('enter'))
while x != 0:
    if x == 3 or 5 or 7 or 9:
        odd_value += x
    elif x == 2 or 4 or 6 or 8:
        even_value += x
    x = int(input('enter'))

print('The sum of the odds is ',odd_value)
print('The sum of the evens is' ,even_value)    

1 个答案:

答案 0 :(得分:0)

你创造了一个无限循环。 x永远不会等于0,因此你的循环将永远继续。它没有退出点。您可以在任何地方使用break语句,以便在需要时退出循环。

另外,你的逻辑错了:

if x in (3, 5, 7, 9):
    odd_value += x
elif x in (2, 4, 6, 8):
    even_value += x

...或

if x == 3 or x == 5 or x == 7 or x == 9:
    odd_value += x
elif x == 2 or x == 4 or x == 6 or x == 8:
    even_value += x

现在它正确评估每个单独的语句,而不是仅仅看到 隐式 True

这就是原始陈述不起作用的原因:

>>> if x == 3 or 5 or 7 or 9:
...     print "Oh Darn!"

Oh Darn!

让我们用英语看看:

if x is equal to 3 # Nope!
if 5 # That's True so let's go on!
Execute the if code block
Forget the elif code block