====== 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:nehrfachverzweigung.png?direct&300 |}}
==== Python-Syntax ====
if :
a1-1
...
an-2
elif :
a2-1
...
a2-n
...
elif :
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!")
=====Erklärvideo=====
{{youtube>4YIqIKB-3Tc}}
===== Vertiefung =====
Im Lehrbuch inf-Schule wird das Thema nochmal vertieft:
* https://www.inf-schule.de/programmierung/imperativeprogrammierung/konzepteimp/entscheidungen/exkurs_mehrfachfallunterscheidungen
=====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 |
| 65% < = p < 80% | 3 |
| 45% < = p < 65% | 4 |
| 25% < = p < 45% | 5 |
| 0% < = p < 25% | 6 |
Nimmt p keinen der angegebenen Werte an, so soll ausgegeben werden "Falsche Eingabe!".
\\
[[python:loesungen:mehrfach| >> Lösungen]]
[[python:schleifen_mit_abbruch|>> Schleifen mit Abbruchbedingung]]
\\
~~DISCUSSION | Hier können Fragen zum Inhalt der Seite gestellt werden. ~~