Seite 1 von 1
Warum kommt da immer 0 raus?
Verfasst: Montag 28. September 2015, 13:20
von YourMTTV
Code: Alles auswählen
def gettung():
ges = int(gewinn.get())
gabe1 = int(s1.get())
gabe2 = int(s2.get())
gabe3 = int(s3.get())
gabe4 = int(s4.get())
gabe5 = int(s5.get())
summe = sum([gabe1, gabe2, gabe3, gabe4, gabe5])
anteil_s1 = gabe1 / summe * 100
anteil_s2 = gabe2 / summe * 100
anteil_s3 = gabe3 / summe * 100
anteil_s4 = gabe4 / summe * 100
anteil_s5 = gabe5 / summe * 100
gewinn_s1 = anteil_s1 * ges / 100
gewinn_s2 = anteil_s2 * ges / 100
gewinn_s3 = anteil_s3 * ges / 100
gewinn_s4 = anteil_s4 * ges / 100
gewinn_s5 = anteil_s5 * ges / 100
print anteil_s1
Hallo,
ich blick nicht ganz durch. Ich glaub das ist ein mathematischer Fehler oder?
Falls mehr gebraucht wird kann ich auch mehr Code geben.
Danke für Hilfe.
MFG Tom
Re: Warum kommt da immer 0 raus?
Verfasst: Montag 28. September 2015, 13:31
von YourMTTV
Hat sich erledigt
Re: Warum kommt da immer 0 raus?
Verfasst: Montag 28. September 2015, 13:32
von DasIch
Du arbeitest mit ganzen Zahlen und bei Operationen auf ganzen Zahlen kommen auch wieder nur ganze Zahlen bei rum. Nutz float wenn du rationale Zahlen (annährend) haben willst.
Du solltest dir darüberhinaus Listen und Schleifen anschauen und diese Nutzen statt deine Variablen durch zu nummerieren.
Re: Warum kommt da immer 0 raus?
Verfasst: Montag 28. September 2015, 13:57
von cofi
Bitte unterlasse es in Zukunft deinen Titel oder den Inhalt zu loeschen. Andere haben deine Probleme eventuell auch und koennen so eine Loesung finden.
Zu den Listen und Schleifen:
Code: Alles auswählen
def gettung():
gesamt = float(gewinn.get())
gaben = [float(s.get()) for s in [s1, s2, s3, s4, s5]]
summe = sum(gaben)
anteile = [(gabe / summe * 100) for gabe in gaben]
gewinne = [(anteil * gesamt / 100) for anteil in anteile]
Das macht das das doch gleich viel einfacher. Das Konstrukt hier ist uebrigens eine List Comprehension laesst sich aber auch als gewoehnliche Schleife ausschreiben.
Re: Warum kommt da immer 0 raus?
Verfasst: Montag 28. September 2015, 14:33
von BlackJack
@YourMTTV: Wo kommen denn `s1` bis `s5` und `gewinn` her? Werte ausser Konstanten sollten Funktionen und Methoden als Argumente betreten und nicht einfach so ”magisch” aus der ”Umgebung” kommen. Sonst bekommt man sehr undurchsichtigen Code der sich nur sehr schwer testen lässt.
Das `get()` lässt eine GUI vermuten: Da kommt man im Grunde nicht um objektorientierte Programmierung (OOP) herum wenn man das sauber lösen möchte.