当我运行我的文件时,我遇到了只有一张卡片打印的问题。它只打印“黑桃二”。我想打印整个甲板。当我不使用类时,我没有打印问题。但是现在我正在尝试理解类。谁能告诉我我做错了什么?我的代码如下.....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])
慕运维8079593
TA贡献1876条经验 获得超5个赞
Deck 上的 str 函数在循环的第一次迭代中返回,因此您只能取回一张卡片。
def __str__(self):
cards = ''
for i in self.cards:
cards += str(i) + ' '
return cards.strip()
应该给出一个包含所有卡片的字符串
添加回答
举报
0/150
提交
取消