使用 python 3 中的类打印卡片组

当我运行我的文件时,我遇到了只有一张卡片打印的问题。它只打印“黑桃二”。我想打印整个甲板。当我不使用类时,我没有打印问题。但是现在我正在尝试理解类。谁能告诉我我做错了什么?我的代码如下.....


RANKS = {2: "Two", 3: "Three", 4: "Four", 5: "Five", 6: "Six", 7: "Seven",

         8: "Eight", 9: "Nine", 10: "Ten", 11: "Jack", 12: "Queen",

         13: "King", 14: "Ace"}


SUITS = {1: "Spades", 2: "Clubs", 3: "Diamonds", 4: "Hearts"}

################################################

class Card():

    def __init__(self, rank, suit):

        self.rank = rank

        self.suit = suit


    def __str__(self):

        return "%s of %s" %(self.rank, self.suit)


class Deck():

    def __init__(self):

        self.cards = []

        for r in RANKS.values():

            for s in SUITS.values():

                self.cards.append(Card(r, s))


    def __str__(self):

        for i in self.cards:

            return str(i)


deck = Deck()

print(deck)


SMILET
浏览 158回答 2
2回答

回首忆惘然

return立即返回。您需要将所有单独的卡片字符串连接成一个字符串,然后返回那个.例如,def __str__(self):     return ', '.join([str(i) for i in self.cards])

慕运维8079593

Deck 上的 str 函数在循环的第一次迭代中返回,因此您只能取回一张卡片。def __str__(self):        cards = ''        for i in self.cards:            cards += str(i) + ' '        return cards.strip()应该给出一个包含所有卡片的字符串
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python