OR语句处理两个!=子句Python

时间:2011-04-15 19:12:03

标签: python operator-keyword clause

(使用Python 2.7)我理解这是非常基本的,但为什么下面的语句不能像写的那样工作:

input = int(raw_input())
while input != 10 or input != 20:
    print 'Incorrect value, try again'
    bet = int(raw_input())

基本上我只想接受10或20作为答案。现在,无论'输入',甚至10或20,我都会得到'不正确的值'。这些条款是否自相矛盾?我认为只要其中一个条款是正确的,OR语句就会说好。谢谢!

5 个答案:

答案 0 :(得分:15)

您需要 and

while input != 10 and input != 20:

仔细考虑:如果input10,则第一个表达式为false,导致Python评估第二个表达式input != 201020的格式不同,因此此表达式的计算结果为true。作为false or true == true,整个表达式为true20相同。

答案 1 :(得分:10)

....或者表达它的另一种方式对你来说似乎更自然:

while input not in (10, 20):
    # your code here...

答案 2 :(得分:0)

您的意思是让bet成为input。而且我认为你的意思是说如果输入不是10而不是20。

input = int(raw_input())
while input != 10 and input != 20:
    print 'Incorrect value, try again'
    input = int(raw_input())

答案 3 :(得分:0)

我想你想要and

while input != 10 or input != 20:

这将永远重复 - 如果input为10,则第一个条件为假。如果input为20,则第二个条件为假。 input永远不能同时为10和20,因此相当于true

答案 4 :(得分:0)

你想要“和”而不是“或”。想想你的布尔逻辑。