我在这个样本中遗漏了哪些明显的问题?附加()

时间:2014-09-12 03:48:27

标签: python

我在这里失踪了什么?它将每个变量存储为同一张卡。在嵌套循环中生成“卡片”,我使用一个注释掉的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])

1 个答案:

答案 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)