我在这里失踪了什么?它将每个变量存储为同一张卡。在嵌套循环中生成“卡片”,我使用一个注释掉的print语句来验证这些值是合法的一步,将它们附加到列表中,但是当我稍后查看列表时,每个“卡片”都是同一张卡片 - 最后一张卡片 -
def PrintCard(i):
print i.suit,i.value
class CardClass():
value = 0
face = ""
suit = 0
slot = 0
onoff = 0
card = []
decks = 1
x = 1
suits = [0,1,2,3]
values = [2,3,4,5,6,7,8,9,10,10,10,10,11]
n = CardClass()
for d in range(decks):
for s in suits:
n.suit = s
for v in values:
n.value = v
"print s,v, n.suit,n.value"
card.append(n)
for i in range(len(card)):
PrintCard(card[i])
答案 0 :(得分:2)
您只创建了一个卡片对象,并且多次将该对象追加到列表中。每次执行n.value = v
时,都要修改同一个对象的值,覆盖之前的值。
要获得不同的卡片对象,您需要为每个套装/值组合创建一个单独的实例,方法是在内部循环中移动n = CardClass()
,并仅在该一个对象上设置套装和值:
for d in range(decks):
for s in suits:
for v in values:
n = CardClass()
n.suit = s
n.value = v
"print s,v, n.suit,n.value"
card.append(n)