2

我是一名自学成才的程序员,我刚开始使用 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")它是在程序早期的一个类中定义的,为了空间,我只是把那部分省略了。当我运行程序时,无论我输入什么,我都会得到第一个案例“往那边看”,我一直试图找出问题所在,但我就是不明白。如果你们能帮助我,我将不胜感激。

4

3 回答 3

7

问题是这一行:

if question == "y" or "yes":

"yes"将始终评估为True.

你真正想要的是:

if question == "y" or question == "yes":

必须对其他条件进行类似的更改。

于 2013-06-13T02:12:53.973 回答
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)总是返回真,你的整个原始条件也是如此。

于 2013-06-13T02:12:11.373 回答
0

条件不对。你有question == "y"一个逻辑or的字符串"yes",它总是True。这就是为什么它每次都评估第一个案例。

尝试更改为if question[0] == 'y'

于 2013-06-13T02:13:44.707 回答