2017-04-27 4 views
-1

Ich bekomme immer einen Fehler, wenn ich etwas anderes als eine ganze Zahl eingeben. Ich möchte, dass die Schleife wiederholt wird, wenn "enter" gedrückt wird oder ein Buchstabe eingegeben wird. Ich möchte dem Benutzer die Fehlermeldung geben, die ich in die else-Anweisung eingegeben habe, und zur Eingabe der Eingabe zurückkehren. Vielen Dank.Warum gibt Integer-Eingabe Fehler ungültiges Literal für 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') 

Dies ist die Eingabe, wenn „5“ gewählt wurde, funktioniert es einwandfrei.

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

Allerdings, wenn ich getroffen oder in einem Brief setzen eingeben es gibt diesem Fehler

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

Ihr Code kann nicht einmal arbeiten, da 'pizza_high' zu einem str auf dem' pizza_high = Eingang gesetzt ist (...) ', einen Fehler in der' range' Anweisung verursacht. 'input' transformiert sein Ergebnis nicht magisch in eine Ganzzahl oder andere Arten. – Evert

+1

Und natürlich erhalten Sie einen (Wert) Fehler, wenn Sie versuchen, eine Zeichenfolge, die keine Zahl ist, in eine Zahl zu konvertieren. versuchen-außer kann da helfen. – Evert

+0

Ja, ich habe es nicht richtig kopiert. Die Ausgabe mit 5 funktioniert, wenn int (Eingabe) verwendet wird, gibt aber immer noch einen Fehler mit int (Eingabe), wenn ein Buchstabe ausgewählt ist. Ich will, dass es meine Fehlermeldung ausgibt und nicht ValueError out –

Antwort

1

Es gibt zwei grundlegende Strategien. Sie können überprüfen, ob eine Umwandlung in Integer funktioniert oder Sie versuchen es einfach und fangen den Fehler ab. Hier sind Beispiele für beide, mit anderen Cleanup hinzugefügt. Zum Beispiel ist es einfacher, aus der while als eine zusätzliche Variable zu brechen. Und beachten Sie Ihre 4 Leerzeichen für Einrückungen.

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') 
Verwandte Themen