2017-04-27 6 views
-1

整数以外の値を入力するとエラーが発生します。入力が押されたとか、または文字が入力されたとすると、ループを繰り返すことを望みます。私は、ユーザーに、私がelseステートメントに入れたエラーメッセージを与えて、入力をもう一度尋ねることに戻りたいと思います。ありがとうございました。整数入力がint()に対して不正な文字定数を与える理由

pizza_high = 0 

    while not repeat: 
    pizza_high = int(input('How many pizzas would you like to order:')) 
    if pizza_high != int: 
     repeat = True 
    else: 
     print('**ERROR** Please use whole numbers only!!') 
     pizza_high = 0 
    for x in range(0, pizza_high): 
    print('pizzas') 

「5」が選択されている場合、これが正しく入力されます。

How many pizzas would you like to order: 5 
pizzas 
pizzas 
pizzas 
pizzas 
pizzas 

は、しかし、私は入力するか、それには2つの基本的な戦略があります

How many pizzas would you like to order: t 
ValueError: invalid literal for int() with base 10: ';' 
+0

あなたのコードでも、動作することはできません。 'input'はその結果を整数や他の型に魔法のように変換しません。 – Evert

+1

もちろん、数値ではない文字列を数値に変換しようとすると、(値)エラーが発生します。試してみてください。 – Evert

+0

はい、私はそれを適切にコピーされませんでした。 int(input)が使われているときの出力は5で動作しますが、文字が選択されているとint(input)でエラーが返されます。私はエラーメッセージを出力し、ValueErrorをループしないようにします。 –

答えて

1

このエラーになります手紙を入れヒットした場合。整数へのキャストが機能するか、それを試してエラーをキャッチするかどうかを確認することができます。両方の例があり、他のクリーンアップが追加されています。例えば、そのより真っ直ぐな前方には、余分な変数を持っているよりも抜け出す。インデントのために4つのスペースに気をつけてください。 pizza_high`が `range`文でエラーを引き起こし、` `pizza_high =入力(...)にSTRに設定されているので、`

while True: 
    pizza_high = input('How many pizzas would you like to order:') 
    if pizza_high.isdigit(): 
     pizza_high = int(pizza_high) 
     break 
    else: 
     print('**ERROR** Please use whole numbers only!!') 

for x in range(0, pizza_high): 
    print('pizzas') 


while True: 
    try: 
     pizza_high = int(input('How many pizzas would you like to order:')) 
     break 
    except ValueError: 
     print('**ERROR** Please use whole numbers only!!') 

for x in range(0, pizza_high): 
    print('pizzas') 
関連する問題