2013-09-25 25 views
1

我得到這個錯誤「ValueError:無效文字爲int()與基10:'g'」當我輸入一個字母或十進制到我的輸入框。輸入框只顯示整個數字,我想知道是否有可能在嘗試輸入字母時提示「您必須輸入數字」或類似的內容。下面有一些我的代碼:將字母添加到我的輸入框?

def checkAnswer(): 
    mainAnswer = entry1.get() 

    if len(mainAnswer) == 0: 
     messagebox.showwarning(message='-You must enter some numbers first!') 
     return 
    if int(mainAnswer) != answer: 
     messagebox.showwarning(message='Sorry...the correct answer is: ' + str(answer)) 
    else: 
     messagebox.showinfo(message='Correct!') 
+0

這是python,對嗎? –

回答

3

你唯一的例外是當你嘗試做int(mainAnswer)mainAnswer不是數字。解決這個問題的方法之一是要做到這一點:

try: 
    int(mainAnswer) 
except ValueError: 
    messagebox.showwarning(message="You must enter a number") 
    return 

# the rest of your code 
0
try: 
    int_answer = int(mainAnswer) 
except ValueError: 
    int_answer = None 
if int_answer is None: 
    ... # Show the error. 
0

編輯:我想錯了。這將永遠不會工作,因爲用戶不會直接輸入一個int。

我只是檢查類型。另外,如果你使用elif,你不應該需要那個空的返回。您也可能需要撤銷類型檢查和len檢查,但我認爲這不重要。

def checkAnswer(): 
    mainAnswer = entry1.get() 

    if type(mainAnswer) != int: 
     messagebox.showwarning(message='You must enter a number.') 
    elif len(mainAnswer) == 0: 
     messagebox.showwarning(message='-You must enter some numbers first!')  
    elif int(mainAnswer) != answer: 
     messagebox.showwarning(message='Sorry...the correct answer is: ' + str(answer)) 
    else: 
     messagebox.showinfo(message='Correct!') 
+0

如果'mainAnswer'最初是一個'int',OP將不會得到他提到的異常。 –

+0

確切的檢查目的。 –

+0

我的意思是,這個檢查將永遠不會通過,因爲即使用戶輸入了'123',它也將是一個'字符串',而不是'int'。 –