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.