Seite 1 von 1

int(round(ni))..?

Verfasst: Samstag 23. Februar 2013, 14:27
von Don Polettone
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!"

Re: int(round(ni))..?

Verfasst: Samstag 23. Februar 2013, 15:14
von snafu
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.

Re: int(round(ni))..?

Verfasst: Samstag 23. Februar 2013, 15:48
von Don Polettone
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.