0%

Entscheidungen treffen · Übung

Prüfe mehrere Möglichkeiten

Eine if/else-Anweisung wählt zwischen zwei Wegen. Manche Entscheidungen haben mehr als zwei sinnvolle Ergebnisse.

Mit Pythons Schlüsselwort elif kann eine Entscheidung mehrere Möglichkeiten der Reihe nach prüfen. Der Name ist kurz für „else if“.

Ergänze mit elif eine weitere Bedingung

Führe dieses Beispiel aus:

Try it

Python prüft die Bedingungen von oben nach unten:

  1. temperature >= 30 ist False, deshalb überspringt Python den ersten Block.

  2. temperature >= 20 ist True, deshalb weist Python "Warm" zu.

  3. Die Kette endet. Python geht nicht weiter zu else.

Nur ein Zweig in dieser Kette läuft.

Die erste wahre Bedingung gewinnt

Eine if/elif/else-Kette endet, sobald sie eine wahre Bedingung findet. Damit gehört die Reihenfolge der Bedingungen zur Logik des Programms.

Betrachte eine Punktzahl von 92:

Try it

Das Programm gibt Passed aus. Die erste Bedingung ist bereits für jede Punktzahl ab 60 wahr. Deshalb erreicht Python die genauere Bedingung score >= 90 nie.

Prüfe die engere, höhere Grenze zuerst:

Try it

Jetzt lautet das Ergebnis Excellent. Eine hilfreiche Gewohnheit ist, jeden Grenzwert sowie je einen Wert auf beiden Seiten davon zu testen.

Hier siehst du dieselbe Regel von oben nach unten mit einer Punktzahl von 82: Die Prüfung gegen 90 ergibt nein, die gegen 75 ergibt ja. Dieser erste Treffer überspringt alle späteren Zweige. Im Diagramm bedeutet SCORE „Punktzahl“, CHECK „Prüfung“, NO „nein“, YES „ja“, FIRST MATCH „erster Treffer“, SKIPPED „übersprungen“ und CONTINUE BELOW „darunter fortfahren“. ELSE bezeichnet den sonst-Zweig.

Eine Punktzahl von 82 erreicht die Grenze 90 nicht, erreicht die Grenze 75, wählt B, überspringt spätere Zweige und fährt unterhalb der Kette fort.

Du kannst mehrere elif-Zweige verwenden

Eine Kette kann mehrere elif-Zweige enthalten:

Try it

Python prüft nur so weit wie nötig. Bei score = 74 sind die ersten beiden Bedingungen falsch und die dritte wahr. Das abschließende else fängt jede Punktzahl unter 60 auf.

Der else-Zweig ist optional, aber hilfreich, wenn das Programm für jeden möglichen Wert ein Ergebnis braucht.

Eine Kette oder getrennte Entscheidungen?

Verwende eine if/elif/else-Kette, wenn die Zweige Alternativen sind und genau einer ausgeführt werden soll.

Verwende getrennte if-Anweisungen, wenn jede Frage unabhängig ist und möglicherweise mehrere Blöcke laufen müssen. Ein Wetterprogramm könnte zum Beispiel sowohl eine Hitze- als auch eine Windwarnung ausgeben. Diese Nachrichten sind keine konkurrierenden Antworten auf dieselbe Frage.

Warum muss score >= 90 in dieser Kette vor score >= 60 stehen?

Was gibt dieser Code aus?

age = 18
if age >= 21:
    print("Level C")
elif age >= 18:
    print("Level B")
elif age >= 16:
    print("Level A")
else:
    print("Not available")

Ordne eine Temperatur ein

In der Übung weist du eine von vier Bezeichnungen zu:

  • Hot für Temperaturen ab 30;

  • Warm für Temperaturen ab 20, aber unter 30;

  • Cool für Temperaturen ab 10, aber unter 20;

  • Cold für alles unter 10.

Verwende eine if/elif/else-Kette mit klar geordneten Grenzen. Die feste Temperatur ist 21, deshalb soll das abgegebene Programm Warm wählen. Probiere nach bestandener Prüfung 30, 20, 10 und 9, um jede Grenze zu prüfen.

Aufgabe

Erstelle eine if/elif/else-Kette, die temperature_band einen Wert zuweist.

  • Hot, wenn temperature mindestens 30 beträgt

  • Warm, wenn sie mindestens 20 beträgt, aber nicht zum vorherigen Zweig passte

  • Cool, wenn sie mindestens 10 beträgt, aber nicht zu einem vorherigen Zweig passte

  • andernfalls Cold

Lass temperature = 21 und den vorgegebenen Ausgabeaufruf unverändert.