Seite 1 von 1
Eine kleine kurze Frage.
Verfasst: Samstag 7. Januar 2012, 12:59
von destroyed
Hallo,
ich brauche bitte etwas Hilfe bei einem Ausdruck mit ich als "nicht Python Kenner" nichts anfangen kann. Im Moment bin ich dabei ein Python Script in eine für mich brauchbare .NET Anwendung zu übertragen und verzweifle an einem Punkt.
Die Zeile aus dem Orignialscript lautet:
Code: Alles auswählen
index += int(ceil( floor(self.width /pow(2, self.maxZoom - i)) / self.tileSize ) ) * \
int(ceil( floor(self.height/pow(2, self.maxZoom - i)) / self.tileSize ) )
Was bedeutet bzw. macht dieses " * \ " am Ende der ersten Zeile?
Danke und Gruß,
destroyed
Re: Eine kleine kurze Frage.
Verfasst: Samstag 7. Januar 2012, 13:07
von nomnom
Der Thread-Titel ist ganz schön mies gewählt. Der Code sieht auch komisch aus, überflüssige int-Konvertierungen…
destroyed hat geschrieben:Was bedeutet bzw. macht dieses " * \ " am Ende der ersten Zeile?
Das Backslash bedeutet einfach nur, dass der Python-Interpreter in der nächsten Zeile weiterlesen soll.
Re: Eine kleine kurze Frage.
Verfasst: Samstag 7. Januar 2012, 13:10
von destroyed
Danke für die schnelle Hilfe!
Dann liegt das Problem wohl an etwas anderem wenn dies nur eine normale Multiplikation ist.
Re: Eine kleine kurze Frage.
Verfasst: Samstag 7. Januar 2012, 20:44
von problembär
destroyed hat geschrieben:Was bedeutet bzw. macht dieses " * \ " am Ende der ersten Zeile?
Danke und Gruß,
destroyed
Doch, ist einfache Multiplikation. Du kannst Dir das Ganze ungefähr so vorstellen:
Code: Alles auswählen
#!/usr/bin/python
from math import *
class Whatever(object):
def __init__(self):
self.width = 800
self.height = 600
self.maxZoom = 10
self.tileSize = 20
index = 1
i = 1
index += int(ceil( floor(self.width /pow(2, self.maxZoom - i)) / self.tileSize ) ) * int(ceil( floor(self.height/pow(2, self.maxZoom - i)) / self.tileSize ) )
print index
app = Whatever()
ceil(), pow() usw. kommen aus dem math-Modul, das durch den Sternchenimport oben eingebunden wurde. Sternchenimport sollte man eigentlich besser vermeiden, sondern das Modul lieber ausschreiben, z.B.:
Code: Alles auswählen
import math
print math.pow(5, 2)
print math.ceil(25.6)
usw.
HTH
Re: Eine kleine kurze Frage.
Verfasst: Samstag 7. Januar 2012, 20:54
von Dav1d
PEP-8 lässt grüßen.
Man kann auch einzelne Objekte importieren:
Re: Eine kleine kurze Frage.
Verfasst: Samstag 7. Januar 2012, 21:01
von /me
problembär hat geschrieben:
Argghhhhh! Sternchen-Import!
Bitte extrem aufpassen wenn man so etwas verwendet. Ein "from os import *" hat schon manchen überrascht, der anschließend
open verwenden wollte.
Re: Eine kleine kurze Frage.
Verfasst: Samstag 7. Januar 2012, 21:42
von problembär
/me hat geschrieben:problembär hat geschrieben:
Argghhhhh! Sternchen-Import!
... und wieder nicht richtig gelesen.
Im Code von destroyed standen ceil(), pow() usw. ohne Modulnamen. Da wollte ich
ihm erklären, wo die hergekommen sein könnten und wie. Durch Sternchenimport (den ich sonst nicht mache (s.o.)) oder wie von Dav1d dargestellt.
Was bei destroyed nun genau stand, wissen wir nicht. Mein Tipp: Es war Sternchenimport.
Re: Eine kleine kurze Frage.
Verfasst: Samstag 7. Januar 2012, 22:51
von Hyperion
Ich muss problembär in diesem Falle mal Recht geben - auch wenn er den Hinweis auf die *-Importe auch direkt zu Beginn hätte geben können und in seinem Code diese dann hätte vermeiden können.
Allerdings verstehe ich nicht, wieso Du überhaupt darauf zu sprechen kommst - der OP hatte doch gar keine Frage zu den einzelnen Funktionen!?! Zumindest lese ich das nicht aus seiner Frage heraus.
Aus seinem zweiten Posting folgere ich eher, dass der Code nicht läuft oder ein falsches Ergebnis produziert. Das könnte an der Division liegen, wenn es sich um Python 2.x handelt und kein `from __future__ import division` eingebunden ist...
Re: Eine kleine kurze Frage.
Verfasst: Samstag 7. Januar 2012, 23:46
von BlackJack
@Hyperion: Oder vielleicht eher umgekehrt denn er möchte ja anscheinend diesen Python-Code der nicht von ihm ist, in eine andere Sprache „übersetzen“ und das `int`/`int` wieder `int` ergibt, ist ja in einigen Sprachen so.