2013-09-25 27 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'。 –