167 lines
5.9 KiB
Python
167 lines
5.9 KiB
Python
"""
|
||
Kapitel G05: Schleifen & Wiederholungen – Aufgabenblatt
|
||
======================================================
|
||
Schulabgleich: 09.1 & 09.2
|
||
|
||
In diesem Kapitel lernst du, wie Wiederholungen in Python funktionieren:
|
||
- for-Schleifen mit range()
|
||
- while-Schleifen mit Bedingungen
|
||
- Schleifen-Akkumulatoren (Summen, Zähler, Produkte)
|
||
- Vorzeitiger Abbruch mit break und Weiterspringen mit continue
|
||
|
||
Bearbeite die Aufgaben von TODO 1 bis TODO 5.
|
||
Teste deine Lösungen jederzeit im Terminal mit:
|
||
python3 test_aufgabe.py
|
||
"""
|
||
|
||
|
||
# ==============================================================================
|
||
# TODO 1: Schreibe die Funktion "summe_bis(n: int) -> int".
|
||
#
|
||
# Beschreibung:
|
||
# Berechnet die Summe aller ganzen Zahlen von 1 bis n (inklusive).
|
||
# Beispiel: summe_bis(5) = 1 + 2 + 3 + 4 + 5 = 15.
|
||
#
|
||
# Regeln:
|
||
# - Wenn n <= 0 ist, soll 0 zurückgegeben werden.
|
||
# - Nutze eine for-Schleife mit range(1, n + 1) und einen Akkumulator (summe = 0).
|
||
# ==============================================================================
|
||
|
||
def summe_bis(n: int) -> int:
|
||
"""Berechnet 1 + 2 + ... + n."""
|
||
# Schreibe hier deinen Code für TODO 1:
|
||
pass
|
||
|
||
|
||
# ==============================================================================
|
||
# TODO 2: Schreibe die Funktion "fakultaet(n: int) -> int".
|
||
#
|
||
# Beschreibung:
|
||
# Die Fakultät n! ist das Produkt aller ganzen Zahlen von 1 bis n.
|
||
# Beispiel: fakultaet(5) = 1 * 2 * 3 * 4 * 5 = 120.
|
||
#
|
||
# Sonderregeln:
|
||
# - Für n = 0 ist die Fakultät mathematisch definiert als 1 (fakultaet(0) == 1).
|
||
# - Für negative Zahlen (n < 0) ist die Fakultät nicht definiert.
|
||
# Löse in diesem Fall einen ValueError aus:
|
||
# raise ValueError("Fakultät ist für negative Zahlen nicht definiert")
|
||
# - Nutze eine for-Schleife mit range(1, n + 1) und einen Akkumulator (produkt = 1).
|
||
# ==============================================================================
|
||
|
||
def fakultaet(n: int) -> int:
|
||
"""Berechnet n! (Fakultät von n)."""
|
||
# Schreibe hier deinen Code für TODO 2:
|
||
pass
|
||
|
||
|
||
# ==============================================================================
|
||
# TODO 3: Schreibe die Funktion "zaehle_gerade_zahlen(start: int, ende: int) -> int".
|
||
#
|
||
# Beschreibung:
|
||
# Zählt, wie viele gerade Zahlen im Intervall von start bis ende (beide inklusive!)
|
||
# liegen.
|
||
#
|
||
# Beispiele:
|
||
# - zaehle_gerade_zahlen(1, 6) -> 3 (nämlich 2, 4, 6)
|
||
# - zaehle_gerade_zahlen(2, 4) -> 2 (nämlich 2, 4)
|
||
# - zaehle_gerade_zahlen(5, 5) -> 0
|
||
# - zaehle_gerade_zahlen(10, 2) -> 0 (wenn start > ende)
|
||
#
|
||
# Tipp:
|
||
# Eine Zahl x ist gerade, wenn x % 2 == 0 gilt.
|
||
# Nutze eine for-Schleife über range(start, ende + 1) und zähle mit zaehler += 1.
|
||
# ==============================================================================
|
||
|
||
def zaehle_gerade_zahlen(start: int, ende: int) -> int:
|
||
"""Zählt alle geraden Zahlen im Bereich [start, ende]."""
|
||
# Schreibe hier deinen Code für TODO 3:
|
||
pass
|
||
|
||
|
||
# ==============================================================================
|
||
# TODO 4: Schreibe die Funktion "ist_primzahl(n: int) -> bool".
|
||
#
|
||
# Beschreibung:
|
||
# Eine Primzahl ist eine ganze Zahl größer als 1, die nur durch 1 und sich selbst
|
||
# ohne Rest teilbar ist (z.B. 2, 3, 5, 7, 11, 13, ...).
|
||
#
|
||
# Regeln:
|
||
# - Zahlen kleiner oder gleich 1 (n <= 1) sind KEINE Primzahlen -> False.
|
||
# - Die Zahl 2 ist die kleinste Primzahl -> True.
|
||
# - Prüfe mit einer for-Schleife alle möglichen Teiler i von 2 bis n - 1
|
||
# (oder bis int(n**0.5) + 1):
|
||
# Wenn n durch i ohne Rest teilbar ist (n % i == 0), dann ist n KEINE Primzahl
|
||
# -> brich sofort ab und gib False zurück!
|
||
# - Wird kein Teiler gefunden, gib am Ende True zurück.
|
||
# ==============================================================================
|
||
|
||
def ist_primzahl(n: int) -> bool:
|
||
"""Prüft, ob n eine Primzahl ist."""
|
||
# Schreibe hier deinen Code für TODO 4:
|
||
pass
|
||
|
||
|
||
# ==============================================================================
|
||
# TODO 5: Schreibe die Funktion "quorsumme(n: int) -> int".
|
||
#
|
||
# Beschreibung:
|
||
# Berechnet die Quersumme einer Zahl n mittels einer WHILE-Schleife.
|
||
# Die Quersumme ist die Summe aller einzelnen Ziffern der Zahl.
|
||
#
|
||
# Beispiele:
|
||
# - quorsumme(482) = 4 + 8 + 2 = 14
|
||
# - quorsumme(1234) = 1 + 2 + 3 + 4 = 10
|
||
# - quorsumme(0) = 0
|
||
# - quorsumme(-482) = 14 (behandle negative Zahlen mit abs(n))
|
||
#
|
||
# Wie holt man Ziffern mit while heraus? (Klassischer Algorithmus):
|
||
# 1. Zahl positiv machen: rest = abs(n), summe = 0
|
||
# 2. while rest > 0:
|
||
# letzte_ziffer = rest % 10 # Modulo 10 liefert die letzte Ziffer
|
||
# summe += letzte_ziffer
|
||
# rest = rest // 10 # Ganzzahldivision schneidet letzte Ziffer ab
|
||
# 3. summe zurückgeben!
|
||
# ==============================================================================
|
||
|
||
def quorsumme(n: int) -> int:
|
||
"""Berechnet die Quersumme von n mittels einer while-Schleife."""
|
||
# Schreibe hier deinen Code für TODO 5:
|
||
pass
|
||
|
||
|
||
# Alias für deutsche Schreibweise
|
||
quersumme = quorsumme
|
||
|
||
|
||
# ==============================================================================
|
||
# Hauptprogramm zum manuellen Ausprobieren:
|
||
# (Führe diese Datei aus mit: python3 aufgabe.py)
|
||
# ==============================================================================
|
||
if __name__ == "__main__":
|
||
print("=" * 50)
|
||
print("🎡 KAPITEL G05: SCHLEIFEN & WIEDERHOLUNGEN")
|
||
print("=" * 50)
|
||
|
||
# 1. Summe
|
||
s5 = summe_bis(5)
|
||
print(f"Summe von 1 bis 5: {s5} (Erwartet: 15)")
|
||
|
||
# 2. Fakultät
|
||
f5 = fakultaet(5)
|
||
print(f"Fakultät von 5 (5!): {f5} (Erwartet: 120)")
|
||
|
||
# 3. Gerade Zahlen zählen
|
||
g = zaehle_gerade_zahlen(1, 10)
|
||
print(f"Gerade Zahlen von 1 bis 10: {g} (Erwartet: 5)")
|
||
|
||
# 4. Primzahlprüfung
|
||
p7 = ist_primzahl(7)
|
||
p9 = ist_primzahl(9)
|
||
print(f"Ist 7 eine Primzahl? {p7} (Erwartet: True)")
|
||
print(f"Ist 9 eine Primzahl? {p9} (Erwartet: False)")
|
||
|
||
# 5. Quersumme
|
||
q = quorsumme(482)
|
||
print(f"Quersumme von 482: {q} (Erwartet: 14)")
|
||
print("=" * 50)
|
||
print("💡 Führe 'python3 test_aufgabe.py' aus, um deine Lösungen zu prüfen!")
|