2016-12-07 3 views
0

Mein aktueller Code durchsucht eine Liste von Tupeln und es werden die Einträge gedruckt, die der eingegebenen Zeichenfolge entsprechen. Wenn die Zeichenfolge nicht gefunden werden kann, wird ein Fehler ausgegeben. Mein Code druckt den Fehler jedoch auch nach dem Drucken der Ergebnisse.Python Weiter zur nächsten Elif-Anweisung

  if scheme not in i: 
        print("Could not find a record with degree scheme",scheme) 

Wie würde ich dies ändern, damit es alle Einträge der for-Schleife finden, und wenn keine gefunden werden zeigt es den Fehler. Weil aktuell die gefundenen Einträge dann auch der "Konnte nicht gefunden" -Fehler ist.

+0

Wickeln Sie den zweiten Teil des Codes in einer anderen Anweisung können entweder nach der for-Schleife oder nach der if-Anweisung. –

+0

also könnte ich es technisch eine elif-aussage machen? Meinst du die erste If-Anweisung oder die zweite if-Anweisung? –

Antwort

1

Sie eine Flagge

if choice == 1: 
     found_flag = False 
     scheme=input("Enter the degree scheme: ").upper() 
     for i in lst: 
      if i[2] == scheme: 
       printStud(i[0:5]) 
       found_flag = True 

     if not found_flag: 
       print("Could not find a record with degree scheme",scheme) 
+0

Wenn das 'found'-Flag auf True gesetzt ist und ich das gefundene Flag in einem anderen für/if-Statement außerhalb dieses aktuellen Flags verwende, wird der gefundene Flag-Wert wieder auf false zurückgesetzt oder bleibt als wahr ? –

+1

Es ist wahrscheinlich sinnvoller, die Flagge innerhalb des äußeren 'if' zu bringen. – Iluvatar

+0

@godlypython, müssten Sie den Wert auf False zurücksetzen. Siehe http://stackoverflow.com/questions/291978/short-description-of-scoping-rules, für variable Scoping-Regeln in Python. – yuval

0

scheme ist nie in i, wie Sie i, um durch die Tupel in lst verwenden, und als solche ist sie ein einziges Tupel von lst. Versuchen

if scheme not in [s[2] for s in lst]: 
+0

Das ist nicht wirklich sein Problem. Und 'i' ist ** nicht ** lokal für die for-Schleife. –

+0

Richtig, es ist nicht streng lokal, aber in diesem Fall ist es nur im Kontext der Schleife nützlich. – Iluvatar

+0

Ja, du hattest recht, was es gesagt hat, war nicht korrekt, es wurde bearbeitet, um jetzt klarer zu sein. – Iluvatar

Verwandte Themen