Python 3 Alle Teiler einer Zahl ausgeben?
Hallo liebe Community!
Leider habe ich wieder einmal eine kleine Blockade. Ich komme bei folgendem Code nicht weiter. zahl = 1 i = (zahl + 1) wert = (int(input("Geben Sie eine Ganzzahl ein: ")))
while(zahl != wert): if (zahl * 10 / i % 10 == 0): print("Alle Teiler von " + str(wert) + " sind:",i) zahl = zahl +1
Ist dieser Fehlerhaft? Und was muss ich ändern damit er richtig funktioniert. PS. Ich will das das Programm alle Teiler einer vom Benutzer eingegebenen Zahl ausgibt.
Danke im Vorraus Kireznieh
3 Antworten
Der Umweg über "*10" und "%10" ist überflüssig bzw. sogar Falsch, da "/" bei ganzzahligen Argumenten den abgerundeten Wert liefert.
Beispiele:
12 % 11 == 1 -> 11 ist kein Teiler von 12!
(12*10 /11) %10 = (120 / 11) % 10 = ( abgerundet(10,909))%10 = 10 % 10 = 0
lasss den Umweg über den Faktor 10 weg und berechne/überprüfe den Rest der Division
zahl % i==0
zahl = 15
i = math.floor(zahl/2) while(i>1): if(zahl%i==0): print(i) i-=1
ok hab == 0 vergessen
1 und zahl is ja logisch
Wenn der eingegebene Wert (wert) durch die Laufvariable (zahl) den Rest Null ergibt, dann ist zahl ein Teiler von wert.
Also müsste es heißen: if (wert % zahl == 0) ...
[i wäre demnach überflüssig]
Ist diese Bedingung erfüllt, wird die print-Anweisung immer wieder neu ausgeführt. Du hast für jeden einzelnen Teiler immer wieder "Alle Teiler von ... sind ... " da stehen. Die Ausgabe müsste also auch noch überarbeitet werden.
(Bin kein besonderer Python-Kenner; evtl. gehts mit "vorgefertigten Funktionen" eleganter)