2015-11-13 208 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__的返回值來考慮相同的對象。