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中的新手...
答案 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 True
和break
语句:
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
这避免了需要两个输入语句。