2015-11-13 120 views
1

我遇到了if语句总是返回false的问题。我正在Canopy中编写我的代码。我几乎肯定这是我的语法,因为我用“> 200”替换了“is'graj mahal'”,输入值为300,并返回“听起来很棒!”。这里是我的代码有问题的摘录:python if语句总是false

answer = str(raw_input("What do you want for dinner?")) 
if answer is "graj mahal": 
    print ("Sounds great!") 
else: 
    print ("Ewie") 
print ("the end") 

有什么建议吗?谢谢你的帮助。

+1

使用'=='而不是'is'来进行字符串比较。 –

+0

我可以发誓我已经尝试过,但我这次工作。谢谢! – DeeFlook

回答

-2

if语句,你可以选择使用

  • ==为“等于”
  • >=为“大于或等于”
  • <=为“小于或等于为”
  • !=为 “不等于”
  • >为 “大于”,并
  • <为“小于”
+1

这个答案很具误导性。您不需要在'if'语句中使用任何列出的比较运算符。 'is'是一个比较运算符,就像其他的运算符一样,尽管语义使得它不适合在提问者的情况下使用。 – Blckknght

+0

哦,我不知道。谢谢! – Caleb

0

原因OP的代码是不工作的是,他被检查两个相等的字符串,其中,即使相等,不考虑同一个对象的身份。

在某些情况下,解释器可能会缓存字符串值(称为字符串“interning”),但并非总是如此,并且只能用于短字符串。

正确区分Python中的身份和平等概念非常重要。相同的对象位于内存中的相同地址。通过__eq__的返回值来考虑相同的对象。