以下是我的代码中问题所在的部分内容。 输入是什么并不重要,脚本将结束 当我输入东西时。
当我输入“是”或“y”时应该重启 没有OR它没有问题
else:
if number == rndnum:
print "Congratulations! You won."
print "Do you want to replay?"
answer = raw_input("Type y (yes) or n (no): ")
dialog = 1
while dialog == 1:
if answer == "n" or "no":
replay = 0
dialog = 0
elif answer == "y" or "yes":
dialog = 0
else:
answer = raw_input("Type y (yes) or n (no): ")
loop = 0 #Will overdo loop var and stop the loop
答案 0 :(得分:4)
if answer == "n" or "no":
Python将解释为:
if (answer == "n") or ("no"):
总是如此,因为or
子句中的第二个条件总是True
(Python中的非空字符串是 truthy ,这意味着它们计算为{条件中的{1}}:
True
您需要的是:
>>> bool("no")
True
当然,if answer in ("n", "no"):
# or
if answer == "n" or answer == "no":
同样如此。
答案 1 :(得分:0)
像这样调整你的代码:
if answer == "n" or answer == "no":
# ...
和
elif answer == "y" or answer == "yes":
# ...
a or b
,其中a
和b
是字符串而不是空字符串,将始终在布尔上下文中计算为True
,演示:
>>> '' or 'x'
'x'
>>> 'y' or 'x'
'y'
>>> '' or ''
''
>>> if 'x': print('hi')
...
hi
>>> if '': print('hi')
...
>>>
前两个表达式将评估为True
。