Frage eines vor den Kopf gestoßenen Anfängers

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Mx_ typicalbeginnier
User
Beiträge: 3
Registriert: Montag 23. Juli 2018, 09:40

Guten morgen,
Ich schreibe erst seit sehr kurzer Zeit in meiner Freizeit mit Python. Aktuell schreibe ich einen Rechentrainer habe aber noch kein Buch dazu. Ich bin gerade dabei mit Hilfe von try except (weiß, dass es kein guter Stil ist) das Ergebnis zweier durcheinander geteilter Zahlen zu überprüfen. Ich möchte 2 Zufallszahlen haben die durcheinander teilbar sind. Vereinfacht sieht das ganze wie folgt aus:
import random

while True:
teilera = random.randint(1,100)
teilerb = random.randint(1,100)
l = teilera/teilerb
print(l)
try:
l = int(l)
break
except Exception:
print("lädt")
continue
print(teilera, teilerb)

Die Konsole gibt mir, dann l aus wobei l kein Integer ist. Allerdings geht das ganze dann nicht ins except. Wenn ich aber einfach statt

teilera = random.randint(1,100)
teilerb = random.randint(1,100)
l = teilera/teilerb

nur l = 0.2 eingebe, geht das Ganze.
Das ist doch komplett unlogisch oder?!?!
Bin ich jetzt zu doof um Variablen zu definieren?
Entschluldigung für diese typische Anfängerfrage,
aber ich kann mir das mit meinen fast nicht vorhandenen Prgrammierkönnen einfach nicht erklären :(
Hoffentlich könnt ihr mir da weiterhelfen.
Mfg
Mx_ typicalbeginnier
User
Beiträge: 3
Registriert: Montag 23. Juli 2018, 09:40

Ups die Einrückungen xD sry
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du setzt garantiert I = 0.2. Sondern I = “0.2”, was ein String ist. Und den zu konvertieren schlägt dann fehl. Du bekommst durch die Division aber natürlich eine Float-Zahl.

Das ist aber kein Grund , so vorzugehen. Nimm stattdessen das built in divmod:

Code: Alles auswählen

>>> divmod(10, 3)
(3, 1)
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Statt zwei Teiler zu suchen, nimm einfach das Produkt. teilera ist dann einfach teilerb * c, wobei teilera ein schlechter Name ist, weil das ja nicht der Teiler sondern die zu teilende Zahl ist.
Mx_ typicalbeginnier
User
Beiträge: 3
Registriert: Montag 23. Juli 2018, 09:40

Super danke;)
Clevere Lösung
Antworten