【发布时间】:2019-11-16 13:51:04
【问题描述】:
我是一个 python 初学者,刚跑完扔了一本书,其中包括这个 MiniProject。练习内容如下:
你的任务是创建一副纸牌类。卡片组类应该在内部使用另一个类,一个卡片类。您的要求是:
- Deck 类应该有一个发牌方法,可以用牌组中的一张牌发牌
- 发牌后,将其从牌堆中移除
- 应该有一种洗牌方法,确保一副牌有所有 52 张牌,然后随机重新排列它们
- Card 类应该有花色(红心、方子、梅花、黑桃)和值(A、2、3、4、5、6、7、8、9、10、J、Q、K)
提供的解决方案如下:
from random import shuffle
class Card:
def __init__(self, suit, value):
self.suit = suit
self.value = value
def __repr__(self):
return "() of ()".format(self.value, self.suit)
class Deck:
def __init__(self):
suits = ['Hearts', 'Diamonds', 'Clubs', 'Spades']
values = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
self.cards = [Card(suit, value) for suit in suits for value in values]
def __repr__(self):
return "Cards remaining in deck: ()".format(len(self.cards))
def shuffle(self):
if len(self.cards) < 52:
raise ValueError("Only full decks can be shuffled")
shuffle(self.cards)
return self
def deal(self):
if len(self.cards) == 0:
raise ValueError("All cards have been dealt")
return self.cards.pop()
Q1:我可以遵循个别方法,但不知道如何正确使用它。
我尝试将Card 类与:
card = Card("Diamonds", "K")
print(card)
上面的输出是:() of ()。
Q2:__repl__ 是如何工作的,我们如何称呼它?
我对长度感到抱歉。我感谢任何有关此问题的帮助和时间。非常感谢任何关于如何解释正在发生的事情的额外清晰度。
【问题讨论】:
标签: python-3.x class