Python :: Aufgabe #321

3 Lösungen Lösungen öffentlich

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ß

Lösungen:

vote_ok
von satn1241 (2900 Punkte) - 14.02.2021 um 17:39 Uhr
Quellcode ausblenden Python-Code
liste = []
min = 1
max = 20

def modulo(zahl):
    zahl_str = str(zahl)
    for e in zahl_str:
        if int(e) == 0:
            return False
        if zahl % int(e) != 0:
            return False
    return True

for i in range(min, max + 1):
    if modulo(i):
        liste.append(i)

print(liste)
vote_ok
von vMaex (480 Punkte) - 25.02.2021 um 10:13 Uhr
Quellcode ausblenden Python-Code
#321

zahlen = []
ergebnis = []

eingabe = input('Bitte zwei Zahlen eingeben im Format "x x" eingeben:')
bereich = sorted(eingabe.split())

for i in range(int(bereich[0]), int(bereich[1]) + 1):
    zahlen.append(i)
print('Min =', bereich[0], '\nMax =', bereich[1])

for zahl in zahlen:
    teiler = list(str(zahl))
    try:
        for i in teiler:
            if zahl % int(i) == 0:
                lösung = True
            else:
                lösung = False
                break
    except:
        lösung = False

    if lösung == True:
        ergebnis.append(zahl)

print('Lösung =', ergebnis)

vote_ok
von eisheiliger (1980 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()