(使用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语句就会说好。谢谢!
答案 0 :(得分:15)
您需要 and
:
while input != 10 and input != 20:
仔细考虑:如果input
为10
,则第一个表达式为false
,导致Python评估第二个表达式input != 20
。 10
与20
的格式不同,因此此表达式的计算结果为true
。作为false or true == true
,整个表达式为true
与20
相同。
答案 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)
你想要“和”而不是“或”。想想你的布尔逻辑。