2013-07-23 111 views
0

我通過新手教程蟒工作,我試圖通過添加條件的選項做一點點超過教程詢問Python的條件if語句失敗

elif option == "2": 
    print "Choose a number for opt 2" 
    var_in = raw_input("> ") 

    if 0 < var_in < 5 or 1 <= var_in < 5: 
     print "between 1-5" 
    elif var_in == "0": #works 
     print "Zero" 
    else: 
     print "Greater than 5!" #works 

如果我輸入任何內容var_in以外的其他值爲0,我得到消息「大於5!」。

我也嘗試使用:

elif option == "2": 
    print "Choose a number for opt 2" 
    var_in = raw_input("> ") 

    if var_in in range(1, 5): 
     print "between 1-5" 
    elif var_in == "0": #works 
     print "Zero" 
    else: 
     print "Greater than 5!" #works 

其中有與上述相同的結果。

任何援助將不勝感激。謝謝!

+0

爲什麼你測試兩個'0 user2357112

+1

轉換爲整數。 – Jiminion

回答

1

var_in是一個字符串,而不是一個整數。你應該這樣做:

try: 
    var_in = int(raw_input("> ")) 
except: 
    print "Incorrect input." 
else: 
    if 0 < var_in <= 5 : 
     print "between 1-5" 
    elif var_in == 0: #works 
     print "Zero" 
    else: 
     print "Greater than 5!" #works 
+0

我以前沒有使用過'try'和'except'。我認爲這意味着如果一個int沒有輸入,它會失敗並返回錯誤? – NULLZ

+0

除了使用'except'外,我可以推薦'除了ValueError'嗎?最好的做法是隻捕捉你所期望的例外情況。 – SethMMorton

+0

@ D3C4FF如果你的字符串不能轉換爲int,Python會產生一個'ValueError'。 'try:except:'塊可用於捕獲此錯誤並提供備用執行路徑。 – SethMMorton

1

raw_input返回一個字符串。你不能將字符串與數字進行有意義的比較; Python 2會給你一個毫無意義的結果,而Python 3將會爲TypeError。把它變成一個int你做比較之前:

user_input = int(raw_input('> ')) 
+0

完美,它修復了它的感謝。如何=='0'仍然工作? – NULLZ

+1

@ D3C4FF:「0」是一個字符串。按照您的預期,比較字符串是否與其他字符串相同。 – user2357112