2017-01-22 2 views
0

Ich bin mir nicht sicher, warum meine Break-Anweisung nicht funktioniert.Pause funktioniert nicht in meiner IF-Anweisung

lst = [] 

while True: 
    try: 
     number = int(raw_input("Enter a number: ")) 
     lst.append(number) 
     print lst 
     if number == 'q': 
      break 
    except: 
     print "Please enter a number!" 
+9

Wie kann 'number'' q' sein, wenn Sie es in ein 'int' konvertieren? –

+0

Ahhh ... und danke für die Bearbeitung für mich. Das macht absoluten Sinn. Ich werde zurückgehen und es umschreiben. Ich denke, ich werde es zu einem int in append machen. Dank. – magic9669

+2

müssen Sie ** vor ** anhängen. –

Antwort

0

Das Problem mit Ihrem Code ist, dass Sie erste Abfrage für die Eingabe mit raw_input, aber sofort wandelt es in ein int(..).

Es gibt zwei Möglichkeiten: Entweder es gelingt, in durch Anhängen es getan welchem ​​Fall die Verarbeitung, aber in diesem Fall number kann nie 'q' sein, oder wenn es q ist, int(..) ausfällt, wirft einen Fehler, und Sie werden ausführen die except: Verzweigung.

Sie können dieses Problem beheben, indem man zuerst den Eingang (in number zum Beispiel) zu speichern, zu überprüfen, ob es 'q' ist, und wenn nicht, zu verarbeiten, so etwas wie:


lst = [] 

while True: 
    try: 
     number = raw_input("Enter a number: ") # no int(..) 
     if number == 'q': 
      break 
     else: 
      lst.append(int(number)) 
      print lst 
    except: 
     print "Please enter a number!" 

Sie die else: verlassen können (nur die else: nicht der Körper der else:) aus dem Programm wie @schwobaseggi sagt.

+0

Keine Notwendigkeit für die 'sonst' entweder – schwobaseggl

+0

@schwobaseggl: Ich stimme zu, aber es macht den Code, meiner Meinung nach mehr * lesbar * (semantisch beide gleichwertig sind, aber als Sie über die Nebenwirkungen der 'Pause' denken müssen). –

+1

Dieser Code sollte neu strukturiert werden, was die Notwendigkeit von "else" vermeidet. Erstens kann der Aufruf von 'raw_input' und die 'if'-Anweisung aus der' try'-Anweisung entfernt werden. Zweitens sollten Sie keinen Balken verwenden außer '; fange nur die Ausnahme (n), die du * kennst *, wie du damit umgehen kannst, was in diesem Fall wirklich nur der 'ValueError' ist, den' int' auslösen könnte. – chepner

Verwandte Themen