2012-09-08 55 views
0

我閱讀了關於追溯錯誤的Python問題的答案,唉,我不明白所提供的答案。當我運行下面的代碼時,如果用戶什麼都不輸入,我會得到一個回溯錯誤。我怎樣才能避免它?請只給出具體和簡短的答案。謝謝!Python追蹤錯誤:無效的字面值int()與基數爲10

Error: Python Traceback Error: Invalid Literal for int() with base 10

def gold_room(): 
    print "This room is full of gold. How much do you take?" 

    next = (raw_input(">>> ")) 
    how_much = int(next) 

    if how_much < 50: 
     print "Nice, you're not greedy, you win!" 
     exit(0) 

    elif how_much > 50: 
     print "You greedy bastard!" 
     exit(0) 
    else: 
     dead("Man, learn to type!") 
+0

當你想到代碼正在做什麼時,錯誤是顯而易見的。爲什麼int()返回一個空字符串返回合理的東西?爲什麼?請解釋一下! –

+0

謝謝,我必須如何更改代碼,以便用戶在每次輸入值時不會輸入值 – user1586038

+0

用戶最好不要輸入'50'或者我猜... –

回答

0

在擴展布爾汗哈立德的答案,如果你想提示用戶,直到他/她已經進入了一個有效的數字,這樣做:

how_much = None 
while how_much is None: 
    next = (raw_input(">>> ")) 
    try: 
     how_much = int(next) 
    except ValueError: 
     print "Dude, enter a value!" 
3

你的原因,是當有人簡單地點擊進入,程序得到一個空字符串'',然後程序試圖''轉換成int類型。

>>> int('') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: invalid literal for int() with base 10: '' 

那麼試試這個:

try: 
    how_much = int(next) 
except ValueError: 
    dead("Dude, enter a value!") 
+0

謝謝,我該如何更改代碼,以便在每次他沒有輸入值來輸入值時詢問用戶。 – user1586038

相關問題