2016-09-11 4 views
1

Ich versuche, herauszufinden, warum weiterhin nicht funktioniert, wenn ich steigende Fehler:Warum weiterhin nicht funktioniert, während Fehler erhöhen

while True: 
     a = int(raw_input('Type integer with 9 numbers ')) 
     if len(str(a)) < 9 or len(str(a)) >9: 
       raise NameError('Wrong Number. Try again...') 
       continue 
     if not istance(a, int): 
       raise ValueError("Oops! That was no valid number. Try again...") 
       continue 
     else: 
       print a 
       break 

Könnten Sie meinen Fehler hinweisen (s)?

+2

'raise' eine Ausnahme auslöst. Die normale Ausführung wird angehalten und Python findet den innersten Ausnahmebehandler (ein 'try/except' Anweisungspaar). Wenn Python keinen Handler findet, wird das Programm beendet. –

Antwort

3

Versuchen Sie print 'Wrong Number. Try again...' anstelle von raise.

raise löst eine Ausnahme aus, die im Grunde bedeutet, dass Ihr Programm unterbrochen wird, wenn die Anweisung erreicht wird, die Ausnahme wird der Aufruf-Stack weitergegeben, bis es von einer try...except Anweisung abgefangen wird.

Was Sie hier zu erreichen scheinen, ist Display eine Fehlermeldung an den Benutzer, weil die Eingabe falsch ist. Verwenden Sie einfach die print Anweisung für diesen Zweck.

+0

Ich habe versucht, versuchen .. 'außer: außer ValueError: print "Hoppla! Das war keine gültige Zahl. Versuchen Sie es erneut ..." weiter' Ist es möglich, außer für eine Bedingung zu verwenden: 'if len (str (a)) <9 oder len (str (a))> 9 '? – Monica

+1

Nehmen Sie das "if" heraus und legen Sie diese Zeile in "try". Dann können Sie die Ausnahme so einfangen. –

1

raise wird eine Ausnahme auslösen und das Programm wird beendet.

Ich finde ein paar Widersprüche in Ihrem Code:

You are converting the user input to an int class, so if isinstance(a, int) is not at all required because a will point to an int class already. If in case, user input could not be converted to "int" then ValueError exception will be raised and program execution would end right there, so not event the first if ... statement will be evaluated.

Ich würde den Code mit wenig Änderungen umschreiben:

while True: 
    try: 
     a = int(raw_input('Type integer with 9 numbers ')) 
    except ValueError: 
     print "Non-numeric chars were entered" 
     continue 
    if len(str(a)) != 9: 
     print "Wrong number" 
     continue 
    else: 
     #do whatever you wanna do 
     print 'You entered nine digits...hurray' 
     break 
+0

Danke! Es hilft sehr! – Monica

Verwandte Themen