gpt4 book ai didi

Python 列表重复整个列表的最后一个元素

转载 作者:太空宇宙 更新时间:2023-11-04 10:17:31 25 4
gpt4 key购买 nike

我正在编写一个 python 程序只是为了制作一个简单的扑克游戏。我只是想熟悉 Python 语言。我知道我编写 python 代码的方法并不完全是 Pythonic,但实际上我只是想弄清楚为什么我的列表将最后一个对象重复附加到列表中的每个空间。正如我追加的那样,列表具有正确的值,但在它只是重复追加最后一个对象之后。我花了大约两天的时间试图弄清楚它,我确信这只是我用语言忽略的东西。任何帮助,将不胜感激。这是代码:

class Card(object):
suit = ""
value = ""

def __init__(self, suit, value):
Card.suit=suit
Card.value=value

def createDeck():

suit = ["DIAMONDS", "HEARTS", "CLUBS","SPADES"]
value = ["ACE", "TWO", "THREE", "FOUR", "FIVE",
"SIX", "SEVEN", "EIGHT", "NINE", "TEN",
"JACK", "QUEEN", "KING"]
Deck = []

for i in range(4):
for j in range(13):
card = Card(suit[i],value[j])
Deck.append(card)
print(Deck[i].value, "OF", Deck[i].suit)

displayDeck(Deck)

def displayDeck(Deck = [], *args):
for i in range(len(Deck)):
print(Deck[i].value, " OF ", Deck[i].suit)

这是我得到的输出,为简洁起见缩短了它: C:\Users\root\Desktop>py Poker.py

ACE OF DIAMONDS

-All Cards Through-

KING OF SPADES

KING OF SPADES

KING OF SPADES

KING OF SPADES

KING OF SPADES
etc. Until The list is filled (52 spots)

最佳答案

在您的 Card.__init__ 方法中,您设置类属性而不是实例属性。所以每个 Card 实例都有相同的属性,最后一组(黑桃 K)。因此,使用 self. 设置实例属性:

class Card(object):
def __init__(self, suit, value):
self.suit = suit
self.value = value

所以类属性的一种用法是花色常量和值名称:

class Card(object):
SUITS = ["DIAMONDS", "HEARTS", "CLUBS","SPADES"]
VALUES = ["ACE", "TWO", "THREE", "FOUR", "FIVE",
"SIX", "SEVEN", "EIGHT", "NINE", "TEN",
"JACK", "QUEEN", "KING"]

def __init__(self, suit, value):
self.suit = suit
self.value = value

def create_deck():
deck = []
for suit in Card.SUITS:
for value in Card.VALUES:
card = Card(suit,value)
deck.append(card)
print(card.value, "OF", card.suit)
return deck

def display_deck(deck):
for card in deck:
print(card.value, " OF ", card.suit)

deck = create_deck()
display_deck(deck)

关于Python 列表重复整个列表的最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34440235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com