Teil 10: Kombination aller Konzepte
Übung 10.1: Temperaturumrechner
python
"""
Übung 10.1: Temperaturumrechner
Aufgabe: Rechne Celsius in Fahrenheit um mit der Formel: F = C * 9/5 + 32
Konzepte: Funktion, Parameter, Arithmetik, Rückgabewert
"""
def celsius_zu_fahrenheit(celsius):
"""
Rechnet Celsius in Fahrenheit um.
Formel: F = C * 9/5 + 32
Args:
celsius: Temperatur in Celsius
Returns:
Temperatur in Fahrenheit
"""
# DEINE LÖSUNG HIER
pass
# Tests
assert celsius_zu_fahrenheit(0) == 32, "Fehler: 0°C = 32°F"
assert celsius_zu_fahrenheit(100) == 212, "Fehler: 100°C = 212°F"
assert abs(celsius_zu_fahrenheit(37) - 98.6) < 0.1, "Fehler: 37°C ≈ 98.6°F"
print("✓ Alle Tests bestanden!")Übung 10.2: Notenbewertung
python
"""
Übung 10.2: Notenbewertung
Aufgabe: Prüfe ob eine Schweizer Note >= 4.0 ist und gib "bestanden" oder "nicht bestanden" zurück.
Konzepte: Funktion, Parameter, if/else, Vergleich
"""
def note_pruefen(note):
"""
Prüft, ob eine Note ausreichend ist (>= 4.0 in der Schweiz).
Args:
note: Schweizer Note (1.0 bis 6.0)
Returns:
"bestanden" oder "nicht bestanden"
"""
# DEINE LÖSUNG HIER
pass
# Tests
assert note_pruefen(5.5) == "bestanden", "Fehler: 5.5 ist bestanden"
assert note_pruefen(4.0) == "bestanden", "Fehler: 4.0 ist bestanden"
assert note_pruefen(3.9) == "nicht bestanden", "Fehler: 3.9 ist nicht bestanden"
assert note_pruefen(6.0) == "bestanden", "Fehler: 6.0 ist bestanden"
print("✓ Alle Tests bestanden!")Übung 10.3: Einkaufspreis berechnen
python
"""
Übung 10.3: Einkaufspreis berechnen
Aufgabe: Berechne den Gesamtpreis für Hefte (2.50 CHF) und Stifte (1.20 CHF).
Konzepte: Funktion, mehrere Parameter, Arithmetik, Variablen
"""
def einkaufspreis(anzahl_hefte, anzahl_stifte):
"""
Berechnet den Gesamtpreis eines Einkaufs.
Args:
anzahl_hefte: Anzahl der Hefte (à 2.50 CHF)
anzahl_stifte: Anzahl der Stifte (à 1.20 CHF)
Returns:
Gesamtpreis in CHF
"""
# DEINE LÖSUNG HIER
pass
# Tests
assert einkaufspreis(2, 3) == 8.60, "Fehler: 2*2.50 + 3*1.20 = 8.60"
assert einkaufspreis(1, 0) == 2.50, "Fehler: 1 Heft = 2.50"
assert einkaufspreis(0, 5) == 6.00, "Fehler: 5 Stifte = 6.00"
print("✓ Alle Tests bestanden!")Übung 10.4: Zahlen filtern
python
"""
Übung 10.4: Zahlen filtern
Aufgabe: Schreibe eine Funktion, die nur positive Zahlen (> 0) aus einer Liste behält.
Konzepte: Funktion, Liste, Schleife, if-Bedingung
"""
def nur_positive(zahlen):
"""
Filtert positive Zahlen aus einer Liste.
Args:
zahlen: Liste von Zahlen
Returns:
Neue Liste nur mit positiven Zahlen
"""
# DEINE LÖSUNG HIER
pass
# Tests
assert nur_positive([1, -2, 3, -4, 5]) == [1, 3, 5], "Fehler: Nur positive behalten"
assert nur_positive([-1, -2, -3]) == [], "Fehler: Keine positiven"
assert nur_positive([1, 2, 3]) == [1, 2, 3], "Fehler: Alle positiv"
print("✓ Alle Tests bestanden!")Übung 10.5: Multiplikationstabelle
python
"""
Übung 10.5: Multiplikationstabelle
Aufgabe: Erstelle eine Liste [zahl*1, zahl*2, ..., zahl*10] mit einer Schleife.
Konzepte: Funktion, Schleife, Liste, Arithmetik
"""
def multiplikationstabelle(zahl):
"""
Erstellt Multiplikationstabelle von 1 bis 10.
Args:
zahl: Die Zahl für die Tabelle
Returns:
Liste mit [zahl*1, zahl*2, ..., zahl*10]
"""
# DEINE LÖSUNG HIER
pass
# Tests
assert multiplikationstabelle(5) == [5, 10, 15, 20, 25, 30, 35, 40, 45, 50], "Fehler: 5er Reihe"
assert multiplikationstabelle(1) == [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "Fehler: 1er Reihe"
print("✓ Alle Tests bestanden!")Übung 10.6: Code Reading (Code lesen)
Aufgabe: Lies den folgenden Code und erkläre, was er macht. Erstelle eine Ablauf-Tabelle für den gesamten Programmablauf.
python
def bewerte_pruefung(punkte, max_punkte):
"""Bewertet eine Prüfung nach Prozent und gibt eine Note zurück."""
prozent = (punkte / max_punkte) * 100
if prozent >= 90:
note = 6.0
elif prozent >= 80:
note = 5.5
elif prozent >= 70:
note = 5.0
elif prozent >= 60:
note = 4.5
elif prozent >= 50:
note = 4.0
else:
note = 3.5
return note
# Mehrere Schüler bewerten
schueler = ["Anna", "Ben", "Clara"]
punkte_liste = [45, 38, 42]
max_punkte = 50
for i in range(len(schueler)):
note = bewerte_pruefung(punkte_liste[i], max_punkte)
print(f"{schueler[i]} hat {punkte_liste[i]} Punkte und die Note {note}")Fragen:
- Was macht die Funktion
bewerte_pruefung()? - Wie viele Schüler werden bewertet?
- Erstelle eine Tabelle für die Schleife:
| Iteration | i | schueler[i] | punkte_liste[i] | prozent | note |
|---|---|---|---|---|---|
| 1 | ? | ? | ? | ? | ? |
| 2 | ? | ? | ? | ? | ? |
| 3 | ? | ? | ? | ? | ? |
- Welche Konzepte werden kombiniert? (Funktionen, Schleifen, Bedingungen, Listen, etc.)
Übung 10.7: Debugging (Fehler finden)
Aufgabe: Der folgende Code soll die Durchschnittsnote berechnen und zählen, wie viele Schüler bestanden haben (Note >= 4.0). Es gibt einen Fehler!
python
"""
Übung 10.7: Debugging - Vergleichsoperator
Aufgabe: Die Note 4.0 sollte als "bestanden" zählen, aber der Code zählt sie nicht.
Hinweis: Was ist der Unterschied zwischen > und >= ?
"""
def analysiere_noten(noten):
"""Analysiert Noten einer Klasse."""
summe = 0
bestanden = 0
for note in noten:
summe = summe + note
if note > 4.0:
bestanden = bestanden + 1
durchschnitt = summe / len(noten)
return durchschnitt, bestanden
# Test
klassen_noten = [5.5, 4.0, 3.5, 5.0, 4.5]
durchschnitt, anzahl_bestanden = analysiere_noten(klassen_noten)
print(f"Durchschnitt: {durchschnitt}")
print(f"Bestanden: {anzahl_bestanden} von {len(klassen_noten)}")
# Erwartet: Durchschnitt: 4.5, Bestanden: 4 von 5 (Note 4.0 sollte auch als bestanden zählen!)Bonus-Übungen
Bonus 11: FizzBuzz
python
"""
Bonus 11: FizzBuzz
Aufgabe: Implementiere das FizzBuzz-Spiel:
- Durch 3 teilbar → "Fizz"
- Durch 5 teilbar → "Buzz"
- Durch 3 UND 5 teilbar → "FizzBuzz"
- Sonst → Zahl als String
"""
def fizzbuzz(n):
"""FizzBuzz-Funktion."""
# DEINE LÖSUNG HIER
pass
# Tests
assert fizzbuzz(3) == "Fizz", "Fehler: 'Fizz'"
assert fizzbuzz(5) == "Buzz", "Fehler: 'Buzz'"
assert fizzbuzz(15) == "FizzBuzz", "Fehler: 'FizzBuzz'"
assert fizzbuzz(7) == "7", "Fehler: '7'"
print("✓ Alle Tests bestanden!")Bonus 18: Caesar-Verschlüsselung
python
"""
Bonus 18: Caesar-Verschlüsselung
Aufgabe: Verschiebe jeden Buchstaben um n Positionen im Alphabet.
Beispiel: "abc" mit verschiebung=1 → "bcd"
"""
def caesar_verschluesseln(text, verschiebung):
"""Caesar-Verschlüsselung für Kleinbuchstaben."""
# DEINE LÖSUNG HIER
pass
# Tests
assert caesar_verschluesseln("abc", 1) == "bcd", "Fehler: 'bcd'"
assert caesar_verschluesseln("xyz", 3) == "abc", "Fehler: Wrap-around"
print("✓ Alle Tests bestanden!")Bonus 19: Stern-Pyramide
python
"""
Bonus 19: Stern-Pyramide
Aufgabe: Erstelle eine Stern-Pyramide als String mit Newlines.
Beispiel für hoehe=3:
*
**
***
"""
def stern_pyramide(hoehe):
"""Erstellt eine Stern-Pyramide."""
# DEINE LÖSUNG HIER
pass
# Tests
assert stern_pyramide(3) == "*\n**\n***", "Fehler: Pyramide"
assert stern_pyramide(1) == "*", "Fehler: Single star"
print("✓ Alle Tests bestanden!")Bonus 20: Taschenrechner
python
"""
Bonus 20: Taschenrechner
Aufgabe: Einfacher Taschenrechner für +, -, *, /
Bei Division durch 0 oder ungültiger Operation: "Fehler" zurückgeben.
"""
def rechne(zahl1, zahl2, operation):
"""Einfacher Taschenrechner."""
# DEINE LÖSUNG HIER
pass
# Tests
assert rechne(10, 5, "+") == 15, "Fehler: 10+5=15"
assert rechne(10, 5, "-") == 5, "Fehler: 10-5=5"
assert rechne(10, 5, "*") == 50, "Fehler: 10*5=50"
assert rechne(10, 5, "/") == 2, "Fehler: 10/5=2"
assert rechne(10, 0, "/") == "Fehler", "Fehler: Division durch 0"
print("✓ Alle Tests bestanden!")