1

入力ボックスに文字または小数を入力すると、「ValueError: 基数 10 の int() の無効なリテラル: '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)when mainAnsweris not a number. それを解決する1つの方法は、これを行うことです:

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
try:
   int_answer = int(mainAnswer)
except ValueError:
   int_answer = None
if int_answer is None:
   ...  # Show the error.
于 2013-09-25T21:46:42.453 に答える
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 に答える