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!')
4

3 回答 3

3

你得到的例外是当你尝试做的int(mainAnswer)时候mainAnswer不是一个数字。解决它的一种方法是这样做:

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

# the rest of your code
于 2013-09-25T21:46:38.283 回答
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!')
于 2013-09-25T21:54:42.010 回答
0
try:
   int_answer = int(mainAnswer)
except ValueError:
   int_answer = None
if int_answer is None:
   ...  # Show the error.
于 2013-09-25T21:46:42.453 回答