2013-11-14 561 views
0

我不明白爲什麼這個函數不打印我想要它打印的文本,我可以改變什麼?函數與if語句

def shut_down(answer): 
    if answer == "Yes" or "YES" or "yes": 
     print "Shutting down..." 
     return "Shutting down..." 
    if answer == "No"or "NO" or "no": 
     print "Shutdown aborted!" 
     return "Shutdown aborted!" 
    else: 
     print "Sorry, I didn't understand you." 
     return "Sorry, I didn't understand you." 



shut_down(yes) 
+0

它總是有用的添加標記爲你的問題所涉及的語言,以便熟悉該語言的人們看到它。請[編輯]添加它。謝謝。 –

+0

也很好解釋什麼是不工作,你期待什麼和你得到什麼結果。 – mb14

回答

0

下面是不正確的(在if的身體始終執行):

if answer == "Yes" or "YES" or "yes": 

相反,寫

if answer in {"Yes", "YES", "yes"}: 

if answer.lower() == "yes": 
-1

你的代碼可能有錯誤,因爲你沒有變yes定義的任何地方做。

定義它,然後你應該是好的。


我說的是要傳遞到您的shut_down功能

1

變量我猜的語言是Python。該or操作條件之間運行,所以你需要做的

answer == "yes" OR answer == "YES" 

等....

你的答案==「是」或「YES」永遠是正確的,因爲"YES"被認爲是一個真正的條件。

1
if answer.lower() == 'yes': 

這就是你應該怎麼做的。其實,這樣做:if answer.lower() in ('yes', 'y'):可以讓像我這樣的懶人更方便。

無論如何,檢查字符串列表正確的方法是這樣的:

if answer in ('foo', 'bar', 'foobar'): 
0

你想把它改成這樣:

if answer == "Yes" or answer == "YES" or answer == "yes": 
    print "Shutting down..." 
    return "Shutting down..." 

甚至整潔:

if answer in ["Yes", "YES", "yes"]: 

甚至moar整潔:

if answer.lower() == "yes":