如果功能在PYTHON中没有按预期工作

时间:2014-07-12 11:45:31

标签: python

以下是我的代码中问题所在的部分内容。 输入是什么并不重要,脚本将结束 当我输入东西时。

当我输入“是”或“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

2 个答案:

答案 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,其中ab是字符串而不是空字符串,将始终在布尔上下文中计算为True,演示:

>>> '' or 'x'
'x'
>>> 'y' or 'x'
'y'
>>> '' or ''
''
>>> if 'x': print('hi')
... 
hi
>>> if '': print('hi')
... 
>>>

前两个表达式将评估为True