2017-02-12 150 views
0

我正在製作一個簡短的程序,只是爲了好玩,當我的名字輸入時,它會說'hi程序員'。這有效,但其他條件與elif等不起作用,而只是打印出if條件。 `a = input('你叫什麼名字')Python不打印出elif和else條件,只打印if語句的條件

a =input('What is your name') 
if a == 'Hasan' or 'hasan': 
    print('Hi programmer!') 
elif a == 'Bob' or 'bob': 
    print('Big fat boi') 
else: 
    print(a + ", i'm sorry to say this, but you suck!!!") 

我正在翻閱StackOverflow,但找不到我正在尋找的答案。我也看了其他網站,但他們似乎從來沒有真正的幫助。我的if語句的輸出結果應該打印出'hi programmer!'它確實如此。但是,當我檢查了我的elif和else條件時,當elif條件的輸出應該是'Big fat boi'並且else語句的輸出應該是'(a),i'時,它仍然輸出'hi programmer'很抱歉說這個,但你吸!「 如果我沒有指定任何東西,我很抱歉,這是我的第一個問題。

+0

您也可以找到[此回答](http://stackoverflow.com/a/36551857/4014959)感興趣。 –

回答

1

在這個例子中正確的語法是:

a =input('What is your name') 
if a == 'Hasan' or a == 'hasan': 
    print('Hi programmer!') 
elif a == 'Bob' or a == 'bob': 
    print('Big fat boi') 
else: 
    print(a + ", i'm sorry to say this, but you suck!!!") 

你一寫它的方式是錯誤的。聲明:

a == 'Hasan' or 'hasan' 

返回TRUE時a等於'哈桑和回報在所有其他情況下,「哈桑」。基本上,第一個if分支總是被使用,因爲'hasan'被Python解釋器評估爲True。

Internet和StackOverflow上有一些資源用於瞭解在這種情況下會發生什麼。例如,閱讀回答這個問題:Python boolean expression and or

0

你需要改變你的if/elif/else聲明:

if a == 'Hasan' or a == 'hasan': 
    print('Hi programmer!') 
elif a == 'Bob' or a == 'bob': 
    print('Big fat boi') 
else: 
    print(a + ", i'm sorry to say this, but you suck!!!") 

這是因爲if 'not_empty_string' :結果始終是真實的。

1

當你

if a == 'Hasan' or 'hasan': 

它會檢查:

if a == 'Hasan' 

if 'hasan' 

由於'hasan'不是一個空字符串,它總是會返回True。 (有關Python文檔的更多對象,請參見Truth value testing以獲取更多具有布爾值的對象。)

這會導致代碼始終在第一個if語句中返回True

爲了使您的代碼工作,你打算,要檢查

if a == 'Hasan' or a =='hasan': 

你也可以查看對您輸入的小寫像這樣

if a.lower() == 'hasan':