2013-06-13 68 views
2

我是一個自學的程序員,我剛開始使用python。我有一個有點問題,當我執行此代碼:如果陳述和while循環

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」,我一直試圖找出問題所在,但我不明白。如果你們能幫助我,我會很感激。

+1

除了解答,您也可以考慮'如果question.lower()在[「Y」,「是」]:' – jedwards

+0

是的,這就是「防彈」辦法。 –

回答

7

的問題是這一行:

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

"yes"將始終評估爲True

你真正想要的是:

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

類似的變化必須的其他條件進行。

+0

非常感謝 – emufossum13

1

你在你的if語句犯了一個錯誤,這應該是:

if (question == "y") or (question == "yes"): 
    print "Ok" 

說明:

(question == "y" or "yes") 

等同於:

(question == "y" or "yes" != 0) # operator 'or' having the prevalence 

「是」 字符串是非-null,("yes" != 0)總是返回True,你的整個原始狀態也是如此。

0

條件錯誤。您有question == "y"和邏輯or與字符串"yes"總是True。這就是爲什麼它每次都評估第一個案例。

嘗試改變if question[0] == 'y'