2016-11-01 1 views
0
try: 
    num=float(num) 
except: 
    print "Invalid input" 
    continue 

dieser Teil meines Codes scheint abgehört, aber wenn ich den Versuch entfernen und außer alles reibungslos funktioniert, so scheint dies das Problem zu sein.Mit fortfahren in einem Versuch und außer innerhalb while-Schleife

ich möchte die Eingabe innerhalb einer while-Schleife in eine ganze Zahl umwandeln, wenn die Eingabe keine ganze Zahl ist, zeigt sie einen Fehler an und fährt einfach mit der Schleife fort und fragt erneut. Es wird jedoch die Schleife nicht fortgesetzt und "Ungültige Eingabe" wird immer für immer gedruckt. Wie kommt es, dass es nicht weiterläuft?

hier ist der gesamte Code, sonst falls etwas falsch sein könnte:

c=0 
num2=0 
num=raw_input("Enter a number.") 
while num!=str("done"): 
    try: 
      num=float(num) 
    except: 
      print "Invalid input" 
      continue 
    c=c+1 
    num2=num+num2  
    num=raw_input("Enter a number.") 
avg=num2/c 
print num2, "\t", c, "\t", avg 
+1

'CONTINUE zu duplizieren bedeutet„den Rest dieser Iteration der Schleife überspringen“. Es bedeutet nicht "weitermachen"; Der Code läuft automatisch weiter. – user2357112

+0

Es wäre hilfreich, wenn Sie beschrieben hätten, was passieren soll, wenn eine ungültige Eingabe erfolgt. Soll das ganze Programm gerade beendet werden? Soll es auf die nächste Eingabe warten? – beeftendon

Antwort

1

Sie können das Problem lösen, indem Sie die Variablenzuweisungen in den try-Block verschieben. Auf diese Weise wird das Material, das Sie überspringen möchten, automatisch vermieden, wenn eine Ausnahme ausgelöst wird. Jetzt gibt es keinen Grund mehr zu continue und die nächste Eingabeaufforderung wird angezeigt.

c=0 
num2=0 
num=raw_input("Enter a number.") 
while num!=str("done"): 
    try: 
      num=float(num) 
      c=c+1 
      num2=num+num2  
    except: 
      print "Invalid input" 
    num=raw_input("Enter a number.") 
avg=num2/c 
print num2, "\t", c, "\t", avg 

Sie können diese ein wenig weiter anziehen durch die Beseitigung der Notwendigkeit der Aufforderung

c=0 
num2=0 
while True: 
    num=raw_input("Enter a number. ") 
    if num == "done": 
     break 
    try: 
     num2+=float(num) 
     c=c+1 
    except: 
     print "Invalid input" 
avg=num2/c 
print num2, "\t", c, "\t", avg 
1

weiter Mittel während wieder zurück, und als num nie ändert, werden Sie in einem stecken Endlosschleife.

Wenn Sie die Schleife bei Auftreten dieser Ausnahme verlassen möchten, verwenden Sie stattdessen den Ausdruck break.

+1

Sorry, früher, jetzt bist du über 50. Einen schönen Tag noch. –

Verwandte Themen