Skip to content

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:

  1. Was macht die Funktion bewerte_pruefung()?
  2. Wie viele Schüler werden bewertet?
  3. Erstelle eine Tabelle für die Schleife:
Iterationischueler[i]punkte_liste[i]prozentnote
1?????
2?????
3?????
  1. 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!")

Informatik & ICT Unterricht Neufeld