Aufwärmen · Aufgabe 1 von 7
// B2.1 · ca. 25 Min. · Einstieg
Entscheidungen mit if, elif und else
Nach dieser Lektion schreiben Sie if-, elif- und else-Ketten, die den richtigen Zweig wählen, verknüpfen Bedingungen mit and, or und not und sagen vorher, wie Python 0, "" und None in einer Bedingung behandelt.
Lektion 1 von 5 in B2 Kontrollfluss
Danach können Sie
- if-, elif- und else-Ketten so ordnen, dass der richtige Zweig läuft
- Vergleiche mit and, or und not verknüpfen, auch als Kette wie 0 <= x < 10
- Vorhersagen, welche Werte in einer Bedingung als falsch gelten: None, False, null und leere Sammlungen
Vorhersagen · Aufgabe 2 von 7
Sagen Sie es vorher, bevor Sie weiterlesen: Was gibt das aus?
temperature = 25 if temperature > 30: print("hot") elif temperature > 20: print("warm") elif temperature > 10: print("mild") else: print("cold")Üben · Aufgabe 3 von 7
Setzen Sie das Schlüsselwort ein, damit 85 Punkte ein "B" bekommen und 95 Punkte weiterhin nur ein "A".
score = 95 grade = "" if score >= 90: grade += "A" ____ score >= 80: grade += "B" else: grade += "C" print(grade)score >= 80:Üben · Aufgabe 4 von 7
or liefert einen seiner Operanden. Was gibt das aus?
name = "" display = name or "guest" print(display)Üben · Aufgabe 5 von 7
Ordnen Sie jedem Ausdruck den Wert zu, den er ergibt.
Denksport · Aufgabe 6 von 7
Knobelaufgabe. Eingegeben wurde "no". Was gibt das aus?
answer = "no" if answer == "y" or "yes": print("continuing") else: print("stopped")Anwenden · Aufgabe 7 von 7
Mini-Aufgabe. Schreiben Sie ein Programm, das mit int(input()) eine Jahreszahl liest und leap (Schaltjahr) oder common (Gemeinjahr) ausgibt. Ein Jahr ist ein Schaltjahr, wenn es durch 4 teilbar ist, außer es ist durch 100 teilbar, es sei denn, auch durch 400. Probieren Sie 2000, 1900, 2024 und 2023.
Prüfen Sie Ihr Ergebnis anhand dieser Liste
Selbst programmieren
Lesen Sie das ausgearbeitete Beispiel und lösen Sie dann die Übungen. Ihr Code läuft in Ihrem Browser oder auf Ihrem Computer und wird nie hochgeladen.
Ausgearbeitetes Beispiel
Eintrittspreise im Museum
Ein Museum berechnet den Eintritt nach Alter: Kinder unter 6 sind frei, Besucher unter 18 und Studierende zahlen 6,50 EUR, Besucher ab 65 zahlen 8 EUR, alle anderen 12 EUR. Ein Gutschein zieht 2 EUR ab. Das Programm berechnet den Preis für eine Person und gibt die Art des Tickets aus. Ändern Sie oben age, student und coupon und starten Sie es erneut.
main.py
# A museum's ticket rules, checked for one visitor.
age = 16
student = False
coupon = "" # an empty string: no coupon
if age < 6:
price = 0.0
elif age < 18 or student:
price = 6.5
elif age >= 65:
price = 8.0
else:
price = 12.0
if coupon:
price = price - 2
print("Coupon used:", coupon)
if price == 0:
print("Free entry")
elif 0 < price <= 7:
print("Reduced ticket:", price, "EUR")
else:
print("Full ticket:", price, "EUR")
Ausführen mit
python main.pyAusgabe
Reduced ticket: 6.5 EUR- age < 18 ist schon True, also sieht Python in age < 18 or student den Wert student gar nicht an.
- coupon ist ein leerer String, also falsch, und der Gutschein-Block wird übersprungen.
- 0 < price <= 7 ist ein verketteter Vergleich: 0 < price and price <= 7.
- Die erste Kette prüft age < 6 vor age < 18: Andersherum zahlte ein vierjähriges Kind 6.5.
Ändern und ausführen
Tab rückt ein, Umschalt+Tab rückt aus. Um den Editor mit der Tastatur zu verlassen, drücken Sie Esc und dann Tab.
Beim ersten Ausführen lädt Ihr Browser Python herunter (bis zu 6.5 MB) und speichert es im Cache. Ihr Code bleibt auf Ihrem Gerät.
Übungen
Übung 1 von 2
Wetter-Hinweis
Das Programm liest eine Temperatur in °C. Geben Sie hot über 30 aus, warm von 21 bis 30, mild von 11 bis 20 und cold für 10 oder weniger. Verwenden Sie eine if-, elif- und else-Kette und prüfen Sie die Grenzen: 30 ist warm, 20 ist mild und 10 ist cold.
Tab rückt ein, Umschalt+Tab rückt aus. Um den Editor mit der Tastatur zu verlassen, drücken Sie Esc und dann Tab.
Beim ersten Ausführen lädt Ihr Browser Python herunter (bis zu 6.5 MB) und speichert es im Cache. Ihr Code bleibt auf Ihrem Gerät.
Hinweise
Hinweis 1
Beginnen Sie mit dem höchsten Bereich: if temperature > 30. Jedes elif prüft dann nur noch die nächste Grenze darunter.
Hinweis 2
„warm von 21 bis 30“ wird zu elif temperature > 20, denn alles über 30 endete schon bei der ersten Bedingung.
Hinweis 3
Vier Bereiche brauchen ein if, zwei elif und ein else. Das else fängt alles ab 10 abwärts.
Eine Lösung zeigen
Ein möglicher Lösungsweg. Ihrer kann anders aussehen und trotzdem alle Prüfungen bestehen.
temperature = int(input())
if temperature > 30:
print("hot")
elif temperature > 20:
print("warm")
elif temperature > 10:
print("mild")
else:
print("cold")
Auf dem eigenen Computer ausführen
Installieren Sie Python 3.14 oder neuer. Speichern Sie diese Dateien in einem Ordner, öffnen Sie dort ein Terminal und führen Sie die Befehle unten aus.
main.py
temperature = int(input())
# Print "hot" above 30, "warm" from 21 to 30,
# "mild" from 11 to 20 and "cold" for 10 or less.
print("cold")
test_main.py
from learnrun import run_main
def advice(temperature):
return run_main(f"{temperature}\n").strip()
def test_hot():
"""31 Grad sind hot"""
got = advice(31)
assert got == "hot", f"bei 31 gab das Programm {got!r} aus, erwartet: 'hot'"
def test_warm_and_mild():
"""25 ist warm und 15 ist mild"""
got = advice(25), advice(15)
assert got == ("warm", "mild"), f"bei 25 und 15 gab das Programm {got!r} aus, erwartet: ('warm', 'mild')"
def test_boundaries():
"""30 ist warm, 20 ist mild und 10 ist cold"""
got = advice(30), advice(20), advice(10)
assert got == ("warm", "mild", "cold"), f"bei 30, 20 und 10 gab das Programm {got!r} aus"
def test_below_zero():
"""-5 ist cold"""
got = advice(-5)
assert got == "cold", f"bei -5 gab das Programm {got!r} aus, erwartet: 'cold'"
Unter macOS und Linux tippen Sie python3, wo in diesen Befehlen python steht, wie in der ersten Lektion.
Programm ausführen:
python main.pyPrüfungen ausführen (learnrun.py muss im selben Ordner liegen):
python learnrun.py testlearnrun.py herunterladenÜbung 2 von 2
Anmeldung prüfen
Das Programm liest einen Namen und dann ein Passwort, je eine Zeile. Ist der Name leer, geben Sie missing name aus. Sonst geben Sie welcome aus, wenn das Passwort open sesame lautet, und andernfalls wrong password. Prüfen Sie den leeren Namen mit not, nicht mit == "".
Tab rückt ein, Umschalt+Tab rückt aus. Um den Editor mit der Tastatur zu verlassen, drücken Sie Esc und dann Tab.
Beim ersten Ausführen lädt Ihr Browser Python herunter (bis zu 6.5 MB) und speichert es im Cache. Ihr Code bleibt auf Ihrem Gerät.
Hinweise
Hinweis 1
Ein leerer String ist falsch, also ist not name genau dann True, wenn der Name leer ist.
Hinweis 2
Prüfen Sie zuerst den Namen: Die Meldung zum fehlenden Namen muss auch bei richtigem Passwort gewinnen.
Hinweis 3
if not name: … elif password == "open sesame": … else: …
Eine Lösung zeigen
Ein möglicher Lösungsweg. Ihrer kann anders aussehen und trotzdem alle Prüfungen bestehen.
name = input()
password = input()
if not name:
print("missing name")
elif password == "open sesame":
print("welcome")
else:
print("wrong password")
Auf dem eigenen Computer ausführen
Installieren Sie Python 3.14 oder neuer. Speichern Sie diese Dateien in einem Ordner, öffnen Sie dort ein Terminal und führen Sie die Befehle unten aus.
main.py
name = input()
password = input()
# 1. Empty name: print "missing name".
# 2. Otherwise, password "open sesame": print "welcome".
# 3. Otherwise: print "wrong password".
print("wrong password")
test_main.py
from learnrun import run_main
def sign_in(name, password):
return run_main(f"{name}\n{password}\n").strip()
def test_welcome():
"""Das richtige Passwort wird begrüßt"""
got = sign_in("ada", "open sesame")
assert got == "welcome", f"bei ada / open sesame gab das Programm {got!r} aus, erwartet: 'welcome'"
def test_wrong_password():
"""Ein falsches Passwort wird abgewiesen"""
got = sign_in("ada", "open")
assert got == "wrong password", f"bei ada / open gab das Programm {got!r} aus, erwartet: 'wrong password'"
def test_missing_name():
"""Ein leerer Name wird zuerst gemeldet, auch mit dem richtigen Passwort"""
got = sign_in("", "open sesame")
assert got == "missing name", f"bei leerem Namen gab das Programm {got!r} aus, erwartet: 'missing name'"
Unter macOS und Linux tippen Sie python3, wo in diesen Befehlen python steht, wie in der ersten Lektion.
Programm ausführen:
python main.pyPrüfungen ausführen (learnrun.py muss im selben Ordner liegen):
python learnrun.py testlearnrun.py herunterladenHäufige Fehler
Ein einzelnes = in der Bedingung
age = 20
if age = 18:
print("just an adult")
Was Python ausgibt
SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?Warum, und die Lösung
Ein einzelnes = weist einen Wert zu; es ist keine Frage. Zum Vergleichen schreiben Sie zwei: if age == 18:. Python führt die Datei gar nicht erst aus, und die Meldung schlägt die Korrektur schon vor.
Text aus input() mit einer Zahl vergleichen
age = "20" # what input() gives you: a string
if age >= 18:
print("adult")
Was Python ausgibt
TypeError: '>=' not supported between instances of 'str' and 'int'Warum, und die Lösung
input() liefert immer einen String, auch wenn Ziffern eingegeben werden, und Python ordnet keinen String gegen eine Zahl. Wandeln Sie zuerst um: age = int(input()). Der Fehler erscheint erst, wenn die Zeile läuft; testen Sie Ihr Programm also mit echten Eingaben.
Den Zweig nicht einrücken
temperature = 35
if temperature > 30:
print("hot")
Was Python ausgibt
IndentationError: expected an indented block after 'if' statement on line 2Warum, und die Lösung
Der Rumpf eines if ist der eingerückte Block darunter: An der Einrückung erkennt Python, welche Zeilen zum Zweig gehören. Rücken Sie ihn um vier Leerzeichen ein. Im Editor auf dieser Seite fügt Tab vier Leerzeichen ein.
Python im Browser: Pyodide 314.0.7, MPL-2.0. Lizenz und Quellcode
Abschlussquiz
5 Fragen, ohne Hinweise. Ab 80 % ist die Lektion abgeschlossen.
Erledigen Sie zuerst alle Aufgaben oben, um das Abschlussquiz freizuschalten.