Python :: Aufgabe #297 :: Lösung #1

2 Lösungen Lösungen öffentlich
#297

Periodenlänge von Stammbrüchen

Fortgeschrittener - Python von JKooP - 01.11.2020 um 09:50 Uhr
Stammbruch nennt man einen Bruch mit einer 1 im Zähler und einer beliebigen natürlichen Zahl im Nenner.
Schreibe eine Methode/Funktion, mit der man die Periodenlänge eines solchen Bruchs berechnen kann.

Beispiele:

1/4 = 0,25 --> Periodenlänge ist 0, da der Bruch abbricht
1/6 = 0,166666… = 0,16 --> Periodenlänge ist 1, da sich nur die Ziffer 6 wiederholt
1/11 = 0,090909… = 0.09 --> Periodenlänge ist 2, da sich die Ziffern 0 und 9 wiederholen

Viel Spaß
#1
vote_ok
von Marty3000 (680 Punkte) - 04.11.2020 um 12:46 Uhr
Quellcode ausblenden Python-Code
def test_297(n):

    def divide(value: int, divider: int, vr_list):
        global nk_list
        global period
        rst = (value * 10) % divider
        nxt = ((value * 10) - rst) / divider
        nk_list.append(int(nxt))
        if rst > 0 and vr_list.count((nxt, rst)) == 0:
            vr_list.append((nxt, rst))
            divide(rst, divider, vr_list)
        elif vr_list.count((nxt, rst)) > 0:
            period = len(vr_list) - vr_list.index((nxt, rst))

    def print_result(n):
        txt: str = "1/%d = 0." % n
        for nk in nk_list:
            txt += str(nk)
        txt += " Periodlänge %d" % period
        print(txt)

    print(1 / n)
    print("Zahl : %.30f" % (1 / n))
    divide(1, n, [])
    print_result(n)


nk_list = []
period: int = 0

if __name__ == '__main__':
    x = int(input("Bitte eine natürlich Zahl eingeben : "))
    test_297(x)

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
1988433

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.