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.
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.
Bitte unterlasse es in Zukunft deinen Titel oder den Inhalt zu loeschen. Andere haben deine Probleme eventuell auch und koennen so eine Loesung finden.
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.
@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.