9.1.2. Verschachtelte Verzweigung (A)#

9.1.2.1. if/elif/else: der erste zutreffende Fall gewinnt#

Bei einer Kette aus if / elif / else wird genau ein Block ausgeführt: der erste Block, dessen Bedingung True ergibt. Wenn keine Bedingung zutrifft, wird der else-Block ausgeführt.

# Demo: mehrere Bedingungen können True sein, aber ausgeführt wird nur der erste Treffer.
P0 = False
P1 = True
P2 = True

if P0:
    ausgewaehlt = "B0"
elif P1:
    ausgewaehlt = "B1"
elif P2:
    ausgewaehlt = "B2"
else:
    ausgewaehlt = "Bn"

ausgewaehlt
'B1'

Ein typisches Beispiel ist eine Einteilung in Bereiche:

x = 2

if x <= 2:
    print("x <= 2")
    x += 1
elif x <= 5:
    print("x <= 5")
    x += 2
elif x <= 7:
    print("x <= 7")
    x += 10
else:
    print("x > 7")
    x = 2

print(x)
x <= 2
3

9.1.2.2. match/case: Fallunterscheidung für konkrete Werte#

match/case ist besonders übersichtlich, wenn Sie diskrete Werte unterscheiden wollen (z. B. Statuscodes):

status = 200

match status:
    case 200:
        text = "OK"
    case 404:
        text = "Not Found"
    case 500 | 503:  # mehrere Fälle (OR)
        text = "Server Error"
    case _:  # Default-Fall (Wildcard)
        text = "Unknown Status"

text
'OK'

Exercise 9.2 (Praxisaufgabe (PA2.1): Stromrechnung mit if/elif/else)

../../../_images/k2_abb1.png

Abb. 9.3 Beispielausgabe (Aufgabensammlung PA2.1).#

Implementieren Sie die Preisstaffelung mit einer if/elif/else-Kette:

  • bis 2500 kWh: 0,40 €/kWh

  • die nächsten 2500 kWh: 0,35 €/kWh

  • darüber: 0,30 €/kWh

kwh = float(input("Verbrauch in kWh: "))

# TODO: if/elif/else

print(f"Rechnungsbetrag: {preis:.2f} EUR")