如果是Statement和while循环

时间:2013-06-13 02:08:19

标签: python loops if-statement while-loop

我是一名自学成才的程序员,我刚开始使用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”,我一直试图找出问题所在,但我只是不明白。如果你们能帮助我,我会非常感激。

3 个答案:

答案 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'