0

トレースバック エラーに関する Python の質問への回答を読みましたが、提供された回答がわかりません。以下のコードを実行すると、ユーザーが何も入力しないとトレースバック エラーが発生します。どうすれば回避できますか?具体的で短い回答のみを入力してください。ありがとう!

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

2 に答える 2

3

それが得られる理由は、誰かがEnterキーを押すだけで、プログラムが空白の文字列を取得し、プログラムが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!")
于 2012-09-08T08:43:25.770 に答える
0

Burhan Khalid の回答に加えて、ユーザーが有効な番号を入力するまでプロンプトを表示する場合は、次のようにします。

how_much = None
while how_much is None:
    next = (raw_input(">>> "))
    try:
       how_much = int(next)
    except ValueError:
       print "Dude, enter a value!"
于 2012-09-08T09:57:08.107 に答える