Python :: Aufgabe #321 :: Lösung #2

3 Lösungen Lösungen öffentlich
#321

Divisionsrest (Modulo) aus einer Zahl und ihrer Ziffern

Anfänger - Python von JKooP - 11.02.2021 um 19:17 Uhr
Ziel soll es sein, eine beliebige Integer-Zahl dahingehend zu überprüfen,
ob die Zahl dividiert durch jede ihrer Ziffern immer den Rest 0 ergibt (Modulo = mod).

Dazu soll eine Methode/Funktion erstellt werden, die zwei Integer-Zahlen (Min, Max) aufnimmt
und alle Lösungen im angegebenen Bereich (Min-Max) als Integer-Array zurückgibt.

Beispiel:

Min = 1
Max = 20
Lösung: = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15 ]

Erläuterung (Auszug):

Zahl 9: 9 mod 9 = 0 => true (gilt für jede einstellige Zahl)
Zahl 10: 10 mod 1 = 0; 10 mod 0 = 10 => false, da nicht beide den Rest 0 haben
Zahl 12: 12 mod 1 = 0; 12 mod 2 = 0 => true
Zahl 14: 14 mod 1 = 0; 14 mod 4 = 2 => false, da nicht beide den Rest 0 haben

Viel Spaß
#2
vote_ok
von eisheiliger (3750 Punkte) - 26.02.2021 um 19:51 Uhr
Quellcode ausblenden Python-Code
"""
#321: Divisionsrest (Modulo) aus einer Zahl und ihrer Ziffern
Ziel soll es sein, eine beliebige Integer-Zahl dahingehend zu überprüfen,
ob die Zahl dividiert durch jede ihrer Ziffern immer den Rest 0 ergibt (Modulo = mod).
"""

import math


def numsplit(zahl):
    einzel = []
    anzst = int(math.log(zahl, 10) + 1)
    for n in range(0, anzst):
        einzel.append(([int(ii) for ii in str(zahl)][n]))
    return einzel


def pruef(first, last):
    arr = []

    for i in range(first, last + 1):
        if i < 10:
            arr.append(i)
        else:
            zahlen = (numsplit(i))
            res = 0
            for j in range(0, len(zahlen)):
                if zahlen[j] != 0:
                    res += (i % zahlen[j])
                else:
                    res += 1
            if res == 0:
                arr.append(i)
    print(arr)


def main():
    print("Pruefung auf Divisionsrest")
    mini = int(input("Untergrenze: "))
    maxi = int(input("Obergrenze: "))

    try:
        if mini < 1 or maxi < mini:
            print("Fehlerhafte Eingabe")
        else:
            pruef(mini, maxi)
    except ValueError:
        pass


if __name__ == '__main__':
    main()

Kommentare:

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

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

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.