Abschnitt 3 · Lektion 3
elif
Ein Paket kostet je nach Gewicht einen von mehreren Preisen. Eine Prüfung hat sechs Noten, ein
Stromtarif hat Stufen. Mit if und else kann ein Programm aber nur zwischen zwei Wegen wählen.
Für alles mit mehr als zwei Wegen gibt es elif.
Sonst, wenn
3.5 gewicht = float(input("Wie schwer ist das Paket in kg? "))
if gewicht <= 2:
print("Päckchen: 3.99 Euro")
elif gewicht <= 10:
print("Paket: 5.99 Euro")
elif gewicht <= 31.5:
print("Großes Paket: 9.99 Euro")
else:
print("Zu schwer, das geht nur als Spedition.") elif ist die Abkürzung für „else if“, also „sonst, wenn“. Es steht wie else auf der Höhe des
if, hat aber eine eigene Bedingung. Python geht die Bedingungen von oben nach unten durch:
- Wiegt das Paket höchstens 2 Kilo? Dann ist es ein Päckchen, und fertig.
- Wenn nicht, wiegt es höchstens 10 Kilo? Dann ist es ein normales Paket.
- Wenn auch nicht, höchstens 31,5 Kilo? Dann ein großes Paket.
- Hat nichts davon gepasst, ist es zu schwer.
Auf das „und fertig“ kommt es an. Python nimmt den ersten Zweig, dessen Bedingung stimmt, und schaut sich den Rest gar nicht mehr an. Ein Paket mit 3,5 Kilo wiegt auch höchstens 31,5 Kilo. Bis zu dieser Frage kommt Python aber nicht mehr, weil schon die zweite gepasst hat.
Deshalb muss in der zweiten Bedingung auch nicht 2 < gewicht <= 10 stehen, obwohl genau dieser
Bereich gemeint ist. An dieser Stelle steht schon fest, dass das Paket schwerer als 2 Kilo ist.
Sonst hätte die erste Bedingung gepasst, und Python wäre gar nicht bis hierher gekommen.
Ein elif darf so oft vorkommen, wie man es braucht. Das else am Ende ist freiwillig. Es fängt
alles auf, was durch alle Bedingungen gefallen ist. Ohne else passiert in diesem Fall einfach
nichts.
Die Zahl steht in eingabe.txt. Zum Ausprobieren lohnen sich die Grenzen: 2, 2.1, 31.5 und
40.
Die Reihenfolge entscheidet
1.2 gewicht = float(input("Wie schwer ist das Paket in kg? "))
if gewicht <= 31.5:
print("Großes Paket: 9.99 Euro")
elif gewicht <= 10:
print("Paket: 5.99 Euro")
elif gewicht <= 2:
print("Päckchen: 3.99 Euro")
else:
print("Zu schwer, das geht nur als Spedition.") Dieselben vier Zweige, nur in umgekehrter Reihenfolge. In eingabe.txt steht ein Päckchen mit 1,2
Kilo, und auf einmal kostet es 9,99 Euro. Was ist passiert?
Die erste Frage lautet jetzt, ob das Paket höchstens 31,5 Kilo wiegt. Das tun 1,2 Kilo, die Antwort
ist True, und Python nimmt diesen Zweig. Dass weiter unten eine Bedingung steht, die viel besser
passt, erfährt es nie. In dieser Reihenfolge ist jedes Paket bis 31,5 Kilo ein großes Paket. Die
beiden Zweige darunter sind toter Code, also Code, der nie laufen kann.
Wenn Grenzen aufeinander aufbauen, gehört die engste Bedingung deshalb nach oben. Bei „höchstens“ ist das die kleinste Zahl, bei „mindestens“ die größte.
Eine Fehlermeldung gibt es bei vertauschten Zweigen nicht. Für Python ist alles in Ordnung, es tut genau, was dasteht. So ein Fehler fällt nur auf, wenn du mit mehreren Werten prüfst, am besten mit denen an den Grenzen.
Drei ifs sind nicht dasselbe
gewicht = 1.2
if gewicht <= 2:
print("Päckchen: 3.99 Euro")
if gewicht <= 10:
print("Paket: 5.99 Euro")
if gewicht <= 31.5:
print("Großes Paket: 9.99 Euro") Wozu überhaupt elif, wenn man auch drei einzelne if untereinander schreiben könnte? Im Beispiel
siehst du es. Jedes if ist eine eigene Entscheidung, und Python stellt jede Frage, egal was davor
passiert ist. 1,2 Kilo sind höchstens 2, höchstens 10 und höchstens 31,5 Kilo. Also stehen für ein
einziges Päckchen drei Preise da.
Mit if, elif und else gehören dagegen alle Zweige zu einer Entscheidung, und davon läuft
höchstens einer. Mehrere einzelne if sind richtig, wenn mehrere Dinge gleichzeitig zutreffen
dürfen. Etwa wenn ein Einkauf versandkostenfrei ist und zugleich einen Rabatt bekommt. Beides kommt
in diesem Abschnitt noch vor.
Was die Aufgabe will
Mit so einer Kette werden in Deutschland zum Beispiel die Abschlussprüfungen einer Ausbildung bewertet, nach dem Notenschlüssel der IHK. Für 0 bis 100 Punkte gibt es sechs Noten, und geprüft wird jede an ihrer unteren Grenze.
Zum Mitnehmen
elif heißt „sonst, wenn“. Python prüft die Bedingungen von oben nach unten und nimmt die erste, die stimmt. Deshalb ist die Reihenfolge Teil der Logik.
Jetzt du
Basis Konto, kostenlosZu dieser Lektion gehört eine Aufgabe. Du schreibst den Code selbst, und nach jedem Lauf sagt dir eine Prüfliste, was schon stimmt.
Dafür brauchst du das Basis Konto. Es kostet nichts, und ein Passwort gibt es auch nicht.
In diesem Kurs läuft dein Code auf einem Server. Dafür hat das Basis Konto 1 Stunde im Monat, mehr Zeit gibt es mit dem Premium Konto.
Was in dieser Lektion steckt
-
Artikel mit 3 Beispielen zum Ausprobieren
Steht hier, ohne Konto lesbar.
-
Aufgabe, dein Code läuft auf einem Server
Öffnet sich mit dem Basis Konto.