我在这个例子中遗漏了什么明显的问题?追加()

2024-09-29 17:21:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我错过了什么?它将每个变量存储为同一张卡。在嵌套循环中生成“cards”,我使用注释输出语句验证值是否合法(在将它们附加到列表之前一步),但是当我稍后查看列表时,每个“cards”都是同一张卡-最后一张卡-

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])

Tags: in列表forvaluerangecardcards嵌套循环
1条回答
网友
1楼 · 发布于 2024-09-29 17:21:52

您只创建了一个card对象,并且多次将该对象附加到列表中。每次执行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)

相关问题 更多 >

    热门问题