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:
Python prüft die Bedingungen von oben nach unten:
temperature >= 30istFalse, deshalb überspringt Python den ersten Block.temperature >= 20istTrue, deshalb weist Python"Warm"zu.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:
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:
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.

Du kannst mehrere elif-Zweige verwenden
Eine Kette kann mehrere elif-Zweige enthalten:
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:
Hotfür Temperaturen ab30;Warmfür Temperaturen ab20, aber unter30;Coolfür Temperaturen ab10, aber unter20;Coldfür alles unter10.
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, wenntemperaturemindestens30beträgtWarm, wenn sie mindestens20beträgt, aber nicht zum vorherigen Zweig passteCool, wenn sie mindestens10beträgt, aber nicht zu einem vorherigen Zweig passteandernfalls
Cold
Lass temperature = 21 und den vorgegebenen Ausgabeaufruf unverändert.