亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將類的新實例添加到列表中?

將類的新實例添加到列表中?

MYYA 2023-04-11 16:26:27
我正在學習 Python 并且正在構建紙牌游戲(似乎很常見并且對初學者來說很好)。我有一個名為打印隨機卡的Cartas 方法的類。imprimir()然后我有一個名為的函數create_deck(),它用 52 張卡片填充一個空列表。import randomclass Cards:    def __init__(self, Value = random.choice([1,2,3,4,5,6,7,8,9,10,11,12,13]),                        Suit = random.choice(["Diamonds", "Hearts", "Clubs", "Spades"])):        self.Value = Value        self.Suit = Suit    def imprimir(self):        if self.Value == 11:            print("J of " + self.Suit)        elif self.Value == 12:            print("Queen of " + self.Suit)        elif self.Value == 13:            print("King of " + self.Suit)        else:            print(str(self.Value) + " de " + self.Suit)card = Cards()card.imprimir()def create_deck():    list_deck = []    list_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]    lista_suit = ["Diamonds", "Hearts", "Clubs", "Spades"]    for number in list_numbers:        for suit in list_suit :            if card == 11:                card = f'J of {suit}'                list_deck.append(card)            elif number == 12:                card = f'Queen of {suit}'                list_deck.append(card)            elif number == 13:                card = f'King of {suit}'                list_deck.append(card)            else:                card = f'{number} of {suit}'                list_deck.append(card)    print(list_deck)print(create_deck())我想create_deck()用 的新實例填充空列表,Cards()而不是只用字符串填充它,例如: [card1, card2, card3, etc etc,..card52]。我怎樣才能做到這一點?
查看完整描述

2 回答

?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

除了 for 循環,您還可以使用列表推導式在一行中完成:


list_deck = [Cards(num, suit) for num in list_numbers for suit in list_suit]

如果您更喜歡像以前一樣使用 for 循環,那么只需使用您的類將項目添加到列表中:


for number in list_numbers:

    for suit in list_suit :

        list_deck.append(Cards(number, suit))

如果你想打印你的 Cards 對象,那么你需要為你的類實現repr函數。


def __repr__(self):

    if self.Value == 11:

        return("J of " + self.Suit)

    elif self.Value == 12:

        return("Queen of " + self.Suit)

    elif self.Value == 13:

        return("King of " + self.Suit)

    else:

        return(str(self.Value) + " de " + self.Suit)


查看完整回答
反對 回復 2023-04-11
?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

你可以這樣生成它:

cards = [Cards() for card in range(n_cards)]

這樣,對于可迭代對象中的每個元素range(n_cards)(它只是從 0 到獨占 n_cards (0, 1, 2... n_cards - 1) 的范圍),您將向Cards()列表中添加一個新對象。


查看完整回答
反對 回復 2023-04-11
  • 2 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號