Проблема распаковки кортежа Python - PullRequest
0 голосов
/ 26 мая 2011
sendnpc = (npc2alive,Orinpc3,Posnpc3)   
Data = dumps((PosYou,OriYou,Shoot,txtt,Posnpc,Orinpc,npcalive,Posnpc2,Orinpc2,sendnpc))

Я отправляю этот материал на другой компьютер, проблема в том, что я его распаковываю.

Распаковка части скрипта выглядит так:

Data, SRIP = GameLogic.sClient.recvfrom(1024)
UPData = loads(Data)
PosServer = [UPData[0][0],UPData[0][1],UPData[0][2]]
OriServer = [UPData[1][0],UPData[1][1],UPData[1][2]]
Server.setPosition(PosServer)
Server.setOrientation(OriServer)
Server.KeySens = UPData[2]
Pump1Shoot = UPData[2]
txt1.Text = UPData[3]
text = text + UPData[3]
Posnpc = [UPData[4][0],UPData[4][1],UPData[4][2]]
Orinpc = [UPData[5][0],UPData[5][1],UPData[5][2]]
npc.setPosition(Posnpc)
npc.setOrientation(Orinpc)
npcalives = UPData[6]
Posnpc2 = [UPData[7][0],UPData[7][1],UPData[7][2]]
Orinpc2 = [UPData[8][0],UPData[8][1],UPData[8][2]]
npc2.setPosition(Posnpc2)
npc2.setOrientation(Orinpc2)
npc2alives = UPData[9][0]
Posnpc3 = [UPData[9][1][0],UPData[9][1][1],UPData[9][1][2]]
Orinpc3 = [UPData[9][2][0],UPData[9][2][1],UPData[9][2][2]]
npc3.setPosition(Posnpc3)
npc3.setOrientation(Orinpc3)

Часть распаковки работает до тех пор, пока я не получу 9-ю переменную из полученных данных (то есть внутри кортежа).Проблема заключается в том, что, поскольку я отправляю кортеж, вложенный в другой кортеж, при распаковке он выглядит следующим образом:

PosYou,OriYou,Shoot,txtt,Posnpc,Orinpc,npcalive,Posnpc2,Orinpc2(npc2alive,Orinpc3,Posnpc3)

Теперь мой вопрос прост: как мне правильно распаковать это?

Ответы [ 2 ]

1 голос
/ 26 мая 2011

Я заметил, что в большинстве случаев позиция предшествует ориентации. Но в этом последнем кортеже у вас есть ориентация перед позицией: (npc2alive,Orinpc3,Posnpc3). Когда вы распаковываете его, вы случайно меняете их.

1 голос
/ 26 мая 2011

Гнездо кортежей LHS.

>>> a, b, (c, d, e) = [1, 2, [3, 4, 5]]
>>> a
1
>>> b
2
>>> c
3
>>> d
4
>>> e
5
...