我是一名自学成才的程序员,我刚开始使用python。当我执行这段代码时,我遇到了一些问题:
x = 0
while x == 0:
question = raw_input("Would you like a hint? ")
if question == "y" or "yes":
print "Ok"
first.give_hint("Look over there")
x = 1
elif question == "n" or "no":
print "Ok"
x = 1
else:
print "I'm Sorry, I don't understand that"
只是你知道,first.give_hint("Look over there")
是在程序前面的一个类中定义的,我只是为了空间而离开了那个部分。当我运行程序时,无论我输入什么,我都会得到第一个案例“Look over There”,我一直试图找出问题所在,但我只是不明白。如果你们能帮助我,我会非常感激。
答案 0 :(得分:7)
问题在于这一行:
if question == "y" or "yes":
"yes"
将始终评估为True
。
你真正想要的是:
if question == "y" or question == "yes":
必须对其他条件进行类似的更改。
答案 1 :(得分:1)
你在if语句中犯了一个错误,这应该是:
if (question == "y") or (question == "yes"):
print "Ok"
说明:
(question == "y" or "yes")
相当于:
(question == "y" or "yes" != 0) # operator 'or' having the prevalence
“是”字符串为非空,("yes" != 0)
始终返回True,您的整个原始状态也是如此。
答案 2 :(得分:0)
条件错了。您有question == "y"
和逻辑or
,其字符串"yes"
始终为True
。这就是每次评估第一个案例的原因。
尝试更改为if question[0] == 'y'