Mehrfachverzweigungen

In der Aufgabe 1 aus dem letzten Abschnitt soll auf mehrere Bedingungen reagiert werden. Dies wird dort gelöst indem man mehrere if-Anweisungen hintereinander schreibt:

note = int(input("Gib deine Note als Zahl ein: ")) if note == 1: print("sehr gut") if note == 2: print("gut") if note == 3: print("befriedigend") if note == 4: print("ausreichend") if note == 5: print("magelhaft") if note == 6: print("ungenügend")

Diese Vorgehensweise funktioniert nicht mehr, wenn man eine falsche Eingabe im else--Zweig abfangen will. Wenn man die else- an die letzte if--Anweisung hängt, würde bei jeder Note außer der 6 noch die Ausgabe „Falsche Eingabe“ erscheinen:

note = int(input("Gib deine Note als Zahl ein: ")) if note == 1: print("sehr gut") if note == 2: print("gut") if note == 3: print("befriedigend") if note == 4: print("ausreichend") if note == 5: print("magelhaft") if note == 6: print("ungenügend") else: print("Falsche Eingabe!")

Um das Problem zu lösen, kann man die if--Anweisungen ineinander schachteln:

note = int(input("Gib deine Note als Zahl ein: ")) if note == 1: print("sehr gut") else: if note == 2: print("gut") else: if note == 3: print("befriedigend") else: if note == 4: print("ausreichend") else: if note == 5: print("magelhaft") else: if note == 6: print("ungenügend") else: print("Falsche Eingabe!")

Auf diese Weise entsteht aber wiederum sehr unübersichtlicher Code, wenn man sehr viele Bedingungen hat. Um das zu vermeiden, gibt es in Python die if-elif-else-Anweisung, mit der man eine Mehrfachverzweigung umsetzen kann.

Allgemeine Formulierung

Verbale Kurzbeschreibung

Wenn die Bedingung 1 erfüllt ist, dann führe die Anweisungen a1-1 bis a1-n aus, sonst wenn die Bedingung 2 erfüllt ist, dann führe die Anweisungen a2-1 bis a2-n aus, sonst wenn … , anderenfalls führe die Anweisungen b1 bis bn aus.

Struktogramm

Python-Syntax

if <bedinung 1>: a1-1 ... an-2 elif <bedinging 2>: a2-1 ... a2-n ... elif <bedingung m>: am-1 ... am-n else: b1 ... bn

Als vereinfachte Lösung unserer Einstiegsaufgabe würde ich also das folgende Programm ergeben:

note = int(input("Gib deine Note als Zahl ein: ")) if note == 1: print("sehr gut") elif note == 2: print("gut") elif note == 3: print("befriedigend") elif note == 4: print("ausreichend") elif note == 5: print("magelhaft") elif note == 6: print("ungenügend") else: print("Falsche Eingabe!")

Aufgaben

Aufgabe 1

Schreibe ein Programm, welches nach Eingabe der Nummer des Wochentages den Wochentag ausgibt. Wenn eine falsche Zahl eingegeben wird, soll ausgegeben werden „Falsche Eingabe!“.

Aufgabe 2

Schreibe ein Programm, welches nach Eingabe der Gesamtpunktzahl und der erreichten Punktzahl die Note ausgibt. Dabei gelten die folgenden Prozentsätze:

Anteil p der erreichten Punkte	Note
95% < = p < = 100%	1
80% < = p < 95%	2