Die Verarbeitung unten ist dazu bestimmt, die Variable dealList
zu 4 Wörterbücher SHD und C bevölkern. Ich denke, das Problem ist in der vorletzten Zeile des Codes, in dem ich eval(suit)
wo Anzüge sind durchgeschleift.Gibt es eine Alternative zu Eval für diesen Code
Alle Anzüge SHD und C werden als leere Wörterbücher initialisiert, sollen aber letztendlich 13 Wörterbuchelemente enthalten, eines für jede Karte in ihrer Farbe.
Ich vermute, was passiert ist, dass jedes Mal eval (suit) ausgeführt wird, findet es ein Wörterbuch zu verarbeiten, aber nicht den Namen des Wörterbuchs, so dass das gewünschte benannte Wörterbuch nicht aktualisiert wird. Anders ausgedrückt sieht es so aus, als würde ich eine Schleife durchlaufen, indem ich den Buchstaben S
aus einer Liste verwende, aber dieser Buchstabe benennt auch ein Wörterbuch. Aber ich weiß nicht, wie man python die beiden verbindet.
Was brauche ich anstelle von eval() oder zusätzlich zu eval(), um mein Ziel zu erreichen?
keys = list('23456789TJQKA')
values = range (13)
suitDict = {}
for key,value in zip(keys, values):
suitDict[key] = value
dealList = 'AQJT5.KQ.8.KQT95 3.A765.QT743.843 974.T93.J92.AJ62 K862.J842.AK65.7'.split()
players = list('NESW')
suits = list('SHDC')
S = H = D = C = {}
playerHand ={}
for player,hand in zip(players,dealList):
playerHand[player]=hand
print player,hand
for suit,cards in zip(suits,playerHand[player].split('.')):
print "SC:",suit,cards
for card in cards:
eval(suit)[suitDict[card]]= player
print "card",card,"Suit",suit,"X",eval(suit),"card",suitDict[card],"player",player
Vielleicht eine Auflistung der Ausgabe wird das Problem zeigen. Beachten Sie in der folgenden Beispielausgabe, dass die ersten 5 Karten Spaten sind und die nächsten 2 Karten Herzen, das K und Q der Herzen, um genau zu sein. Aber das Pikwörterbuch wird geändert, nicht das Herzwörterbuch. Diese fehlende Änderung des Arrays, das aktualisiert wird, wird für immer fortgesetzt.
N AQJT5.KQ.8.KQT95
SC: S AQJT5
card A Suit S X [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 'N'] card 12 player N
card Q Suit S X [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'N', 11, 'N'] card 10 player N
card J Suit S X [0, 1, 2, 3, 4, 5, 6, 7, 8, 'N', 'N', 11, 'N'] card 9 player N
card T Suit S X [0, 1, 2, 3, 4, 5, 6, 7, 'N', 'N', 'N', 11, 'N'] card 8 player N
card 5 Suit S X [0, 1, 2, 'N', 4, 5, 6, 7, 'N', 'N', 'N', 11, 'N'] card 3 player N
SC: H KQ
card K Suit H X [0, 1, 2, 'N', 4, 5, 6, 7, 'N', 'N', 'N', 'N', 'N'] card 11 player N
card Q Suit H X [0, 1, 2, 'N', 4, 5, 6, 7, 'N', 'N', 'N', 'N', 'N'] card 10 player N
SC: D 8
card 8 Suit D X [0, 1, 2, 'N', 4, 5, 'N', 7, 'N', 'N', 'N', 'N', 'N'] card 6 player N
SC: C KQT95
card K Suit C X [0, 1, 2, 'N', 4, 5, 'N', 7, 'N', 'N', 'N', 'N', 'N'] card 11 player N
card Q Suit C X [0, 1, 2, 'N', 4, 5, 'N', 7, 'N', 'N', 'N', 'N', 'N'] card 10 player N
card T Suit C X [0, 1, 2, 'N', 4, 5, 'N', 7, 'N', 'N', 'N', 'N', 'N'] card 8 player N
card 9 Suit C X [0, 1, 2, 'N', 4, 5, 'N', 'N', 'N', 'N', 'N', 'N', 'N'] card 7 player N
card 5 Suit C X [0, 1, 2, 'N', 4, 5, 'N', 'N', 'N', 'N', 'N', 'N', 'N'] card 3 player N
E 3.A765.QT743.843
SC: S 3
card 3 Suit S X [0, 'E', 2, 'N', 4, 5, 'N', 'N', 'N', 'N', 'N', 'N', 'N'] card 1 player E
SC: H A765
card A Suit H X [0, 'E', 2, 'N', 4, 5, 'N', 'N', 'N', 'N', 'N', 'N', 'E'] card 12 player E
card 7 Suit H X [0, 'E', 2, 'N', 4, 'E', 'N', 'N', 'N', 'N', 'N', 'N', 'E'] card 5 player E
card 6 Suit H X [0, 'E', 2, 'N', 'E', 'E', 'N', 'N', 'N', 'N', 'N', 'N', 'E'] card 4 player E
card 5 Suit H X [0, 'E', 2, 'E', 'E', 'E', 'N', 'N', 'N', 'N', 'N', 'N', 'E'] card 3 player E
SC: D QT743
card Q Suit D X [0, 'E', 2, 'E', 'E', 'E', 'N', 'N', 'N', 'N', 'E', 'N', 'E'] card 10 player E
card T Suit D X [0, 'E', 2, 'E', 'E', 'E', 'N', 'N', 'E', 'N', 'E', 'N', 'E'] card 8 player E
card 7 Suit D X [0, 'E', 2, 'E', 'E', 'E', 'N', 'N', 'E', 'N', 'E', 'N', 'E'] card 5 player E
card 4 Suit D X [0, 'E', 'E', 'E', 'E', 'E', 'N', 'N', 'E', 'N', 'E', 'N', 'E'] card 2 player E
card 3 Suit D X [0, 'E', 'E', 'E', 'E', 'E', 'N', 'N', 'E', 'N', 'E', 'N', 'E'] card 1 player E
SC: C 843
card 8 Suit C X [0, 'E', 'E', 'E', 'E', 'E', 'E', 'N', 'E', 'N', 'E', 'N', 'E'] card 6 player E
card 4 Suit C X [0, 'E', 'E', 'E', 'E', 'E', 'E', 'N', 'E', 'N', 'E', 'N', 'E'] card 2 player E
card 3 Suit C X [0, 'E', 'E', 'E', 'E', 'E', 'E', 'N', 'E', 'N', 'E', 'N', 'E'] card 1 player E
Ich bin mir nicht sicher, ob es die Ursache für das Problem ist , aber 'S = H = D = C = {}' macht fast sicher nicht, was Sie wollen. Alle diese Namen verweisen auf dasselbe Wörterbuch. Ich nehme an, dass Sie wollen, dass sie beide separate Wörterbücher sind. – Blckknght
Das ist genau das Problem. – zerowords