Seite 1 von 1

Variable aufteilen

Verfasst: Freitag 5. September 2008, 14:17
von Krauzi
Hi, ich hab ein Problem:
In einer Funktion wir mir eine Variable geliefert, die so aufgebaut ist:
(x, y, z)
Wie bekomme ich das ganze jetzt in ein array?
also:
position[0] = x
position[1] = y
position[2] = z

MfG Krauzi

Verfasst: Freitag 5. September 2008, 14:26
von CM
Verstehe ich nicht: Du hast ein Tuple in der Form, die Du haben willst, oder? Wo ist das Problem? Du kannst das Kind doch auch "position" nennen. Falls ich Dich falsch verstanden habe, zeige doch einfach mal ein bißchen Code.

Verfasst: Freitag 5. September 2008, 14:33
von Krauzi
das problem ganz von vorne:
mit einer funktion wird ein object an einer bestimmten stelle erstellt. Diese Bestimmte stelle wird so bestimmt:

Code: Alles auswählen

attackerpos = attacker.getDefaultVehicle().getPosition()
Dannach "sollte" das object hiermit (nur ein teil des codes, der euch eh nichts sagen würde):

Code: Alles auswählen

[...]
host.rcon_invoke('"Object.absolutePosition " + str(attackerpos)')
[..]
allerdings MUSS nach object.absolutePosition ein x/y/z stehen.
Die funktion attacker.getDefaultVehicle().getPosition() liefert mir allerdings nur x,y,z aus. Das muss einfach in x/y/z umgewandelt werden.
das würde dann so auschauen:

Code: Alles auswählen

host.rcon_invoke("Object.absolutePosition " + str(position[0]) + "/" + str(position[1] + "/" + str(position[2])

Verfasst: Freitag 5. September 2008, 14:42
von HWK
Da brauchst Du doch nichts umwandeln:

Code: Alles auswählen

host.rcon_invoke("Object.absolutePosition %s/%s/%s" % (x, y, z))
MfG
HWK

Verfasst: Freitag 5. September 2008, 14:42
von CM

Code: Alles auswählen

host.rcon_invoke("Object.absolutePosition " + "/".join(map(str, position)))
Und was hat das mit der Eingangsfrage zu tun?

PS zu langsam ... HWKs Lösung ziehe ich auch im Allgemeinen vor ...

Verfasst: Freitag 5. September 2008, 15:05
von Fabian Kochem
x, y und z sind vermutlich Integer, richtig?

Code: Alles auswählen

x, y, z = attacker.getDefaultVehicle().getPosition()
host.rcon_invoke('"Object.absolutePosition %i/%i/%i"' % (x, y, z))
http://docs.python.org/lib/typesseq-strings.html

Verfasst: Freitag 5. September 2008, 15:36
von Krauzi
hä? ich versteh euch nicht.
Die funktion [attacker.getDefaultVehicle().getPosition()] gibt z.b. das hier
aus:
(-160.95599365234375, 162.2977294921875, -266.51699829101562)
ich brauch das allerdings ohne klammern und anstelle von kommas brauche ich Schrägstriche (/).
wenn ich x,y,z = attacker.get...... schreibe habe ich doch 3 variablen, die den selben wert haben in meinem fall z.b. (-160.95599365234375, 162.2977294921875, -266.51699829101562).
Das bringt mir wohl nicht viel. Ich muss es z.b. so schreiben:

Code: Alles auswählen

host.rcon_invoke("Object.absolutePosition -160.95599365234375 / 162.2977294921875 / -266.51699829101562")
also: ich muss die variable attackerpos durchsuchen und die werte die zischen ( und , ;zwischen , und ,; und zwischen , und ) rausfiltern. Nur wie mach ich das?

Verfasst: Freitag 5. September 2008, 16:00
von Rebecca
wenn ich x,y,z = attacker.get...... schreibe habe ich doch 3 variablen.
Das bringt mir wohl nicht viel. Ich muss es z.b. so schreiben:
Und ob dir das was bringt!

Probier doch einfach mal aus, was die Leute oben gepostet haben, z.B. so:

Code: Alles auswählen

>>> x = 1
>>> y = 2
>>> z = 3
>>>
>>> print "%i / %i / %i" % (x, y, z)
1 / 2 / 3
Siehst du, drei einzelne Variablen werden zu einem String mit Slashes.