Python :: Aufgabe #321
3 Lösungen
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ß
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:
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)
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)
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()