| .. | ||
| aufgabe.py | ||
| index.html | ||
| musterloesung.py | ||
| README.md | ||
| test_aufgabe.py | ||
Kapitel G04: Verzweigungen & Bedingungen (Schulabgleich 08.0) 🛤️🔀
Herzlich willkommen zum Kapitel Bedingungen und Verzweigungen!
Programme müssen oft Entscheidungen treffen: Darf die Person schon Auto fahren?, Bekommt sie einen Rabatt?, Ist heute ein Schaltjahr?. In Python steuern wir solche Entscheidungen mit if, elif und else.
🎯 Lernziele
- Entscheidungsstrukturen verstehen:
if,elifundelsefür logische Programmabläufe einsetzen. - Die Eisenbahn-Weichen-Analogie begreifen: Sobald die erste Bedingung zutrifft, werden alle nachfolgenden
elif/else-Zweige übersprungen. - Vergleichsoperatoren beherrschen:
==,!=,<,>,<=,>=. - Logische Operatoren kombinieren:
and(und),or(oder),not(nicht / Verneinung). - Klammern & Rangfolge anwenden: Komplexe Bedingungen mit
()sicher strukturieren. - Flache vs. tief verschachtelte Bedingungen: Sauberen, lesbaren Code nach dem KISS-Prinzip schreiben.
💡 Theorie & Wichtige Konzepte
1. Die Weichen-Analogie (Eisenbahn-Gleis) 🛤️
Stell dir dein Programm wie einen Zug auf den Schienen vor. An einer Weiche entscheidet das Signal (Bedingung), auf welches Gleis der Zug abbiegt:
if alter < 12:
preis = 6.0 # Gleis 1 (Kind)
elif alter >= 65:
preis = 8.5 # Gleis 2 (Senior)
elif ist_student:
preis = 9.5 # Gleis 3 (Student)
else:
preis = 12.0 # Ausweichgleis (Standard-Erwachsener)
🔑 Wichtig: Python prüft die Bedingungen von oben nach unten. Der erste Block, dessen Bedingung
Trueergibt, wird ausgeführt. Danach verlässt Python die gesamte Weiche!
2. Die Vergleichsoperatoren
| Operator | Bedeutung | Beispiel | Ergebnis |
|---|---|---|---|
== |
Ist gleich? (Vorsicht: Nicht mit Zuweisung = verwechseln!) |
5 == 5 |
True |
!= |
Ist ungleich? | 5 != 3 |
True |
< |
Kleiner als | 10 < 20 |
True |
> |
Größer als | 10 > 20 |
False |
<= |
Kleiner oder gleich (Grenzwert inkludiert) | 10 <= 10 |
True |
>= |
Größer oder gleich (Grenzwert inkludiert) | 18 >= 18 |
True |
3. Logische Operatoren & Wahrheitstabellen
Oft reicht eine einzelne Bedingung nicht aus. Mit logischen Operatoren verknüpfst du mehrere Bedingungen:
and (Logisches UND – Beide müssen wahr sein):
| Bedingung A | Bedingung B | A and B |
|---|---|---|
True |
True |
True |
True |
False |
False |
False |
True |
False |
False |
False |
False |
or (Logisches ODER – Mindestens eins muss wahr sein):
| Bedingung A | Bedingung B | A or B |
|---|---|---|
True |
True |
True |
True |
False |
True |
False |
True |
True |
False |
False |
False |
not (Logisches NICHT – Dreht den Wahrheitswert um):
not TrueergibtFalsenot FalseergibtTrue
4. Das Schaltjahr-Rätsel 📅
Ein schönes Praxisbeispiel für logische Verknüpfungen ist die gregorianische Schaltjahr-Regel:
- Ein Jahr ist ein Schaltjahr, wenn es durch 4 teilbar ist (
jahr % 4 == 0). - Säkularjahre (Jahrhunderte wie 1900, 2100) sind keine Schaltjahre (
jahr % 100 != 0), - außer sie sind durch 400 teilbar (wie 2000, 2400:
jahr % 400 == 0).
In Python formuliert:
ist_schalt = (jahr % 4 == 0 and jahr % 100 != 0) or (jahr % 400 == 0)
🎯 Deine Aufgaben in aufgabe.py
Öffne g04_verzweigungen_und_bedingungen/aufgabe.py und implementiere die 4 Funktionen:
-
TODO 1: Kinokarten-Preisrechner
ticket_preis(alter: int, ist_student: bool) -> float- Alter < 12:
6.0€ - Alter >= 65:
8.5€ - 12 bis 64 Jahre: Wenn
ist_student->9.5€, sonst ->12.0€
-
TODO 2: Schulnoten-Ermittlung
schulnote_text(punkte: int) -> str< 0oder> 100:"Ungültige Punktezahl">= 90:"Sehr gut",>= 75:"Gut",>= 60:"Befriedigend",>= 50:"Genügend",< 50:"Nicht genügend"
-
TODO 3: Schaltjahr-Erkennung
ist_schaltjahr(jahr: int) -> bool(jahr % 4 == 0 and jahr % 100 != 0) or (jahr % 400 == 0)
-
TODO 4: Achterbahn-Zulassung
kann_achterbahn_fahren(groesse_cm: int, begleitung_erwachsen: bool) -> bool- Ab 140 cm: immer
True - Ab 120 cm bis 139 cm:
True, wennbegleitung_erwachsen == True, sonstFalse - Unter 120 cm: immer
False
🧪 Tests ausführen
Überprüfe deine Lösung im Terminal mit:
python3 test_aufgabe.py
Wenn alle 4 Tests mit OK durchlaufen, hast du das Kapitel gemeistert! 🎉