2016-12-23 46 views
0

我想了解這兩個選項的結果的差異,並可能得到一個更好的選擇。我是一個新手,但我的指令不是很詳細,我很難獲得有關Python語法的信息 - 如果有人擁有很棒的資源,我很樂意接受它。 :)或語法python

def numberchoice(): 
    print "How much do you take?" 
    choice = raw_input("> ") 
    if "0" in choice or "1" in choice or "2" in choice: #OPTION ONE 
    #if "0" or "1" or "2" in choice: #OPTION TWO 
     how_much = int(choice) 
    else: 
     print "please type a number." 
     numberchoice() 
    if how_much < 50: 
     exit("Nice, you're not greedy, you win!") 
    if how_much > 50: 
     exit("You greedy bastard!") 
numberchoice() 

我不明白的是爲什麼選項ONE和TWO不可互換;如果我使用選項一,並且用戶輸入一個錯誤的迴應 - 即。字母而不是數字 - 選項一運行「其他」響應,但選項二隻是出錯。提前致謝!

回答

2
if "0" or "1" or "2" in choice 

這是新程序員的一個非常常見的錯誤。

這可以被解讀爲

if '0' == true or '1' == true or '2' in choice 

你看到的問題是什麼呢?作爲非空字符串的"0"將爲真,並且將始終爲真,因此其餘檢查從未完成。

記住,or只是檢查它的一個操作數是真的(或真理)。它沒有一些聰明的行爲,允許它以英文閱讀並按照您的預期進行操作。

版本1是正確的,雖然在下一步你會學到更好的寫作方式。

+0

當我看到你的答案時,它看起來很簡單明智。謝謝! – Unabashedley