int(round(ni))..?

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
Benutzeravatar
Don Polettone
User
Beiträge: 115
Registriert: Dienstag 23. November 2010, 20:26
Wohnort: Schweiz

Hallöle!

Ich bin noch nicht wirklich der Platzhirsch was Python betrifft und es hat schon oft massiv geholfen, hier Fragen zu stellen. Die abs() Funktion z.Bsp. hat meinen Code wohl um Dutzende Zeilen verkürzt - ich kannte diese bis vor etwa einem halben Jahr noch nicht, ich bin noch immer recht neu am Start mit programmieren, aber easy, es bessert ja stetig zumindest.

Kurzum - folgendes:

Ich hab pybox2D entdeckt und gefällt mir sehr das Teil. Nun muss ich da ja immer die Positionen umrechnen in ints, damit pygame die Körper zeichnen kann. An sich kein Problem - es funktioniert ja korrekt so wie ich dies tue aber es sieht schrecklich aus..?

Code: Alles auswählen

x = int(round(b2x * PPM))
Ich muss das aber irgendwie so weil int(6.6) ist für Python einfach 6, basta. Trivial eigentlich, aber ich kann's im Moment nicht kürzer schreiben. Jemand eine Idee? Fänd ich nett.

"Ni!"
Ich code, also bin ich.
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Worum geht es denn jetzt genau? Willst du `round()` vermeiden? Dann könntest du dir mit `int(deine_zahl + 0.5)` behelfen. Oder geht es dir darum, dass `round()` einen `float` zurückliefert und du dessen Umwandlung in `int()` häßlich findest? Falls letzteres zutrifft: Bist du sicher, dass an der Stelle, wo du das Ergebnis übergibst, tatsächlich keine Fließkommazahlen erlaubt sind?

Ich verstehe aber auch nicht so ganz, was daran häßlich sein soll. Für den Umstand, dass viele mathematische Funktionen nur Fließkommazahlen liefern, kann man als Anwender ja nichts. Folglich muss man halt an solchen Stellen eine Typumwandlung machen, wenn nötig. Denk dir mal als andere Beispiele das Lesen von Benutzereingaben über das Termianl oder das Lesen von Werten aus Dateien: Da erhält man immer Strings zurück und muss diese noch in den passenden Typen konvertieren. Manchmal wird dies hinter einer Bibliotheksfunktion versteckt, aber oftmals eben auch nicht.

Übrigens: In Python 3.x erhält man an vielen solcher Stellen einen `int` zurück.
Benutzeravatar
Don Polettone
User
Beiträge: 115
Registriert: Dienstag 23. November 2010, 20:26
Wohnort: Schweiz

Hi snafu,

vielen Dank, dann bin ich ja beruhigt.

Auf Python 3 umsteigen möcht ich noch nicht glaub ich, aber danke für den Input.
Ich code, also bin ich.
Antworten