77 lines
1.9 KiB
Python
77 lines
1.9 KiB
Python
"""
|
||
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))
|