Entscheidungsketten: if ... elif ... else
if ... elif ... else
Es gibt auch Fälle, in denen wir mehr als zwei Möglichkeiten haben und mehrere Bedingungen prüfen wollen. Eine elegante Struktur: Mit if ... elif ... else
können Sie eine Kette aus mehrere Bedingungen bilden. Dann wird die die erste wahre Bedingung ausgeführt.
Syntax
if Bedingung1:
# Auszuführende Anweisungen, wenn Bedingung1 True ist
elif Bedingung2:
# Auszuführende Anweisungen, wenn Bedingung2 True ist (und alle vorherigen Bedingungen False)
elif Bedingung3:
# Auszuführende Anweisungen, wenn Bedingung3 True ist (und alle vorherigen Bedingungen False)
else:
# Auszuführende Anweisungen, wenn keine der Bedingungen True ist
Bei if ... elif ... else
-Ketten jeweils nur die erste wahre Bedingung ausgeführt wird. Eine kleine Demonstration:
- Führen Sie das Programm aus und schauen Sie den Output an.
- Ändern Sie das zweite
if
zu einemelif
. Führen Sie das Programm erneut aus.
Was Ihnen auffallen sollte:
- Wenn es zwei
if
-Bedingungen sind, werden sie unabhängig voneinander ausgewertet und ausgeführt. - Mit einer
elif
-Bedingung verketten Sie die Bedingungen. Wenn die erste Bedingung wahr ist, wird die zweite nicht mehr geprüft - geschweige denn ausgeführt.
Modulo Bingo 2
Damit können wir eine Aufgabe der letzten Lektion erheblich eleganter Lösung. Die Aufgabe war: Schreiben Sie ein Programm, dass alle Zahlen bis 20 überprüft.
- Wenn die Zahl nur durch 3 teilbar ist, drucken Sie “Drei” aus
- Wenn die Zahl nur durch 4 teilbar ist, drucken Sie “Vier” aus
- Wenn die Zahl sowie durch 3 als auch durch 4 teilbar ist, drucken Sie “BINGO!” aus
- Ansonsten drucken Sie die Zahl selbst aus
Die Lösung der letzten Lektion war:
for i in range(1, 21):
if i % 3 == 0 and not i % 4 == 0:
print("Drei")
if i % 4 == 0 and not i % 3 == 0:
print("Vier")
if i % 3 == 0 and i % 4 == 0:
print("BINGO!")
if not i % 3 == 0 and not i % 4 == 0:
print(i)
Eine elegantere Lösung nutzt dem Umstand, dass if ... elif ... else
-Ketten immer nur die erste Bedingung selektieren, die zutrifft.
Lösung
for i in range(1, 21): if i % 3 == 0 and i % 4 == 0: print("BINGO!") elif i % 3 == 0: print("Drei") elif i % 4 == 0: print("Vier") else: print(i)
Last updated on