Python :: Aufgabe #323
3 Lösungen
Fröhliche Zahlen (Happy Number)
Fortgeschrittener - Python
von JKooP
- 28.02.2021 um 10:24 Uhr
Von einer fröhlichen Zahl spricht man, wenn eine natürliche Ausgangszahl (Integer)
nach einer bestimmten Iterationsvorschrift am Ende den Zielwert 1 hat.
Die Iterationsvorschrift hier:
Die Summe der Quadrate aller Ziffern einer Zahl.
Wiederholen des Prozesses mit der neu entstandenen Zahl, bis am Ende
das Ergebnis entweder 1 (true) ist oder die Schleife unendlich weiterläuft (false).
Beispiel Glückliche Zahl:
Zahl 19
1² + 9² = 82
8² + 2² = 68
6² + 8² = 100
1² + 0² + 0² = 1
Beispiel unendlich:
Zahl 2
2² = 4
4² = 16
1² + 6² = 37
3² + 7² = 58
5² + 8² = 89
8² + 9² = 145
...
Aufgabe 1 (mittel):
Erstelle eine Methode/Funktion, die als Ergebnis bei einer Glücklichen Zahl den Wert true
und ansonsten false zurückgibt. Dabei können mehrere Schleifen ineinander verschachtelt werden.
Aufgabe 2 (schwieriger):
Wie Aufgabe 1, aber mit nur einer Schleife.
Viel Spaß
nach einer bestimmten Iterationsvorschrift am Ende den Zielwert 1 hat.
Die Iterationsvorschrift hier:
Die Summe der Quadrate aller Ziffern einer Zahl.
Wiederholen des Prozesses mit der neu entstandenen Zahl, bis am Ende
das Ergebnis entweder 1 (true) ist oder die Schleife unendlich weiterläuft (false).
Beispiel Glückliche Zahl:
Zahl 19
1² + 9² = 82
8² + 2² = 68
6² + 8² = 100
1² + 0² + 0² = 1
Beispiel unendlich:
Zahl 2
2² = 4
4² = 16
1² + 6² = 37
3² + 7² = 58
5² + 8² = 89
8² + 9² = 145
...
Aufgabe 1 (mittel):
Erstelle eine Methode/Funktion, die als Ergebnis bei einer Glücklichen Zahl den Wert true
und ansonsten false zurückgibt. Dabei können mehrere Schleifen ineinander verschachtelt werden.
Aufgabe 2 (schwieriger):
Wie Aufgabe 1, aber mit nur einer Schleife.
Viel Spaß
Lösungen:
Python-Code
def is_happy_number(num: int, max_tries: int = 10) -> bool: """ Set `max_tries` to prevent infinite looping. """ sum_ = sum(pow(int(val), 2) for val in str(num)) if sum_ == 1: return True else: if max_tries == 1: return False return is_happy_number(sum_, max_tries=max_tries - 1)
Python-Code
zahl = 2 def happy_number(zahl_fkt): zahl_fkt = str(zahl_fkt) summe = 0 liste = [] while not summe == 1: summe = 0 for e in zahl_fkt: summe += int(e) ** 2 for e in liste: if e == summe: return False liste.append(summe) zahl_fkt = str(summe) return True print(happy_number(zahl))
Python-Code
""" #323: Fröhliche Zahlen (Happy Number) Von einer fröhlichen Zahl spricht man, wenn eine natürliche Ausgangszahl (Integer) nach einer bestimmten Iterationsvorschrift am Ende den Zielwert 1 hat. """ def happy(zahl): zwi = 0 ite = [zahl] wei = True erg = "" while wei: split = list(map(int, str(zahl))) for i in split: zwi += (i ** 2) if zwi == 1: erg = "happy" wei = False elif zwi in ite: erg = "sad" wei = False else: ite.append(zwi) zahl = zwi zwi = 0 return ite, erg def main(): print(happy(19)) print(happy(2)) if __name__ == '__main__': main()