Hio,
ich habe folgenes Problem:
Bei meinem Programm werden aus irgendeinen Grund die Wahrscheinlichkeiten nicht berechnet obwohl durch Tests die variable: ende noch direkt vor den berechnungen blegt ist und vom typ int ist-.- hat jmd ne idee warum das so ist?
tipps zum styl wären auch nett^^ ist nemlich mehr oder weniger mein ersten programm^^
Fehler in Berechnung
@Logaff: Es gibt einen Unterschied bei der Division zwischen Fliesskommazahlen und ganzen Zahlen. Bei der ganzzahligen Division kommt auch wieder nur ein ganzzahliger Wert heraus:
Wenn man anfängt Variablennamen durchzunummerieren, will man in der Regel nur einen Namen verwenden, den man an eine Liste bindet.
`gesamt` wird nicht verwendet.
Wenn man vor Eintritt in eine Schleife bereits weiss, wie oft sie wiederholt wird, ist eine ``for``-Schleife das Mittel der Wahl.
Code: Alles auswählen
In [564]: 10 / 20
Out[564]: 0
In [565]: 10.0 / 20
Out[565]: 0.5
`gesamt` wird nicht verwendet.
Wenn man vor Eintritt in eine Schleife bereits weiss, wie oft sie wiederholt wird, ist eine ``for``-Schleife das Mittel der Wahl.
Code: Alles auswählen
(z1/ende)*100
Code: Alles auswählen
100.0 * z1 / ende
Weiter willst du alle Variablen mit Zahlen, ersetzen durch Listen oder ähnliches. Dadurch verkleinert sich dein Programm auf ca 1/3.
Die Berechnung der Wahrscheinlichkeiten ist dann in einer Zeile erledigt (sicher noch Verbesserungswürdig):
Code: Alles auswählen
#Wahrscheinlichkeiten berechnung WK= zx/ende*100
wkz = [100.0 * z[i] / ende for i in range(13)]
ja gesamt war nur nen überbleibsel meines experiments^^
stimmt ist ja logisch als division muss ja nichts ganzen rauskommen, is klar ^^ wieso wird das eig nich automatisch gemacht?
edit: wo ist das Problem mit der Integerdivision?
stimmt ist ja logisch als division muss ja nichts ganzen rauskommen, is klar ^^ wieso wird das eig nich automatisch gemacht?
edit: wo ist das Problem mit der Integerdivision?
@DaMutz: Ist in der Tat noch verbesserungswürdig. Das `i` ist doch überflüssig:
Code: Alles auswählen
wkz = [100.0 * n / ende for n in z]
Logisch ist an dem Verhalten aber so oder so nicht. Gleitkommazahlen decken nicht alle Rationalen Zahlen ab. Und 1/2 ist auch nicht 0. Am korrektesten wäre es vermutlich, wenn bei 1 / 2 ein Bruch rauskommen würde.Logaff hat geschrieben:stimmt ist ja logisch als division muss ja nichts ganzen rauskommen, is klar ^^ wieso wird das eig nich automatisch gemacht?