Aufgaben-Python/lehrpfad_1_grundlagen/05_schleifen_und_wiederholungen/musterloesung.py

77 lines
1.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
Kapitel G05: Schleifen & Wiederholungen – Musterlösung
=====================================================
Schulabgleich: 09.1 & 09.2
"""
def summe_bis(n: int) -> int:
"""Berechnet 1 + 2 + ... + n."""
if n <= 0:
return 0
summe = 0
for i in range(1, n + 1):
summe += i
return summe
def fakultaet(n: int) -> int:
"""Berechnet n! (Fakultät von n)."""
if n < 0:
raise ValueError("Fakultät ist für negative Zahlen nicht definiert")
if n == 0:
return 1
produkt = 1
for i in range(1, n + 1):
produkt *= i
return produkt
def zaehle_gerade_zahlen(start: int, ende: int) -> int:
"""Zählt alle geraden Zahlen im Bereich [start, ende]."""
if start > ende:
return 0
zaehler = 0
for zahl in range(start, ende + 1):
if zahl % 2 == 0:
zaehler += 1
return zaehler
def ist_primzahl(n: int) -> bool:
"""Prüft, ob n eine Primzahl ist."""
if n <= 1:
return False
if n == 2:
return True
if n % 2 == 0:
return False
# Prüfe ungerade Teiler bis zur Wurzel von n
for teiler in range(3, int(n**0.5) + 1, 2):
if n % teiler == 0:
return False
return True
def quorsumme(n: int) -> int:
"""Berechnet die Quersumme von n mittels einer while-Schleife."""
rest = abs(n)
summe = 0
while rest > 0:
letzte_ziffer = rest % 10
summe += letzte_ziffer
rest = rest // 10
return summe
# Alias für alternative Schreibweise
quersumme = quorsumme
if __name__ == "__main__":
print("Musterlösung G05 Demonstrationen:")
print("summe_bis(5) =", summe_bis(5))
print("fakultaet(5) =", fakultaet(5))
print("zaehle_gerade_zahlen(1, 10) =", zaehle_gerade_zahlen(1, 10))
print("ist_primzahl(17) =", ist_primzahl(17))
print("quorsumme(482) =", quorsumme(482))