而Python中的语句和布尔OR

时间:2017-09-15 06:01:09

标签: python while-loop boolean

y=''
print 'y= nothing'
y = raw_input('-->')
while y!='O' or y!='X':
    print 'You have to choose either X or O'
    y = raw_input('-->')
print 'Loop exited'
print y

有人可以解释为什么上面的代码在python中无法正常运行吗?

我假设每当用户输入除“X”或“O”之外的东西时,他都会收到消息并提示输入。但是一旦用户提供“X”或“O”,循环就应该退出。但它没有......你能帮忙吗?我是python中的新手...

3 个答案:

答案 0 :(得分:2)

这种错误的逻辑流程有几种修复方法。 @Aanchal Sharma已经提到过一个问题,就是在while循环中有两个!=和一个and,如下所示:

while y != 'O' and y != 'X':

另一种解决方案是使用我个人认为更具可读性的in

while y not in ['X', 'O']:
    print 'You have to choose either X or O'
    y = raw_input('--> ')

希望这有帮助!

答案 1 :(得分:1)

y=''
print 'y= nothing'
y = raw_input('-->')
while (y!='O' and y!='X'):
    print 'You have to choose either X or O'
    y = raw_input('-->')
print 'Loop exited'
print y

使用'和'条件不是'或'。在您的情况下,y将始终不等于' O'或不等于' X'。它不能同时等于两者。

答案 2 :(得分:1)

另一种方法是使用while Truebreak语句:

while True:
    y = raw_input('-->')

    if  y in ['O', 'X']:
        break
    print 'You have to choose either X or O'

print 'Loop exited'
print y

例如:

-->a
You have to choose either X or O
-->b
You have to choose either X or O
-->c
You have to choose either X or O
-->O
Loop exited
O

这避免了需要两个输入语句。