Python :: Aufgabe #323

3 Lösungen Lösungen öffentlich

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ß

Lösungen:

vote_ok
von felixTheC (1040 Punkte) - 04.03.2021 um 12:44 Uhr
Quellcode ausblenden 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)
vote_ok
von satn1241 (2900 Punkte) - 06.03.2021 um 20:09 Uhr
Quellcode ausblenden 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))
vote_ok
von eisheiliger (1980 Punkte) - 15.03.2021 um 16:53 Uhr
Quellcode ausblenden 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()