为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

SMILET 2021-11-30 16:39:14
当我运行我的文件时,我遇到了只有一张卡片打印的问题。它只打印“黑桃二”。我想打印整个甲板。当我不使用类时,我没有打印问题。但是现在我正在尝试理解类。谁能告诉我我做错了什么?我的代码如下.....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)
查看完整描述

2 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

return立即返回。您需要将所有单独的卡片字符串连接成一个字符串,然后返回那个.

例如,

def __str__(self):
    return ', '.join([str(i) for i in self.cards])


查看完整回答
反对 回复 2021-11-30
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

Deck 上的 str 函数在循环的第一次迭代中返回,因此您只能取回一张卡片。


def __str__(self):

        cards = ''

        for i in self.cards:

            cards += str(i) + ' '

        return cards.strip()

应该给出一个包含所有卡片的字符串


查看完整回答
反对 回复 2021-11-30
  • 2 回答
  • 0 关注
  • 153 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信