Variable aufteilen

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
Krauzi
User
Beiträge: 77
Registriert: Montag 22. Oktober 2007, 18:06
Kontaktdaten:

Freitag 5. September 2008, 14:17

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
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Freitag 5. September 2008, 14:26

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.
Krauzi
User
Beiträge: 77
Registriert: Montag 22. Oktober 2007, 18:06
Kontaktdaten:

Freitag 5. September 2008, 14:33

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])
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Freitag 5. September 2008, 14:42

Da brauchst Du doch nichts umwandeln:

Code: Alles auswählen

host.rcon_invoke("Object.absolutePosition %s/%s/%s" % (x, y, z))
MfG
HWK
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Freitag 5. September 2008, 14:42

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 ...
Fabian Kochem
User
Beiträge: 36
Registriert: Mittwoch 5. April 2006, 14:11
Wohnort: Köln

Freitag 5. September 2008, 15:05

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
Krauzi
User
Beiträge: 77
Registriert: Montag 22. Oktober 2007, 18:06
Kontaktdaten:

Freitag 5. September 2008, 15:36

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?
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Freitag 5. September 2008, 16:00

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.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Antworten