Benutzer-Werkzeuge

Webseiten-Werkzeuge


python:mehrfach

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!")

Erklärvideo

Vertiefung

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!“.

>> Lösungen

>> Schleifen mit Abbruchbedingung


Hier können Fragen zum Inhalt der Seite gestellt werden.

Geben Sie Ihren Kommentar ein. Wiki-Syntax ist zugelassen:
B O᠎ P J S
 
python/mehrfach.txt · Zuletzt geändert: 2021/02/01 11:05 von lutz