import collections
Card = collections.namedtuple('Card', ['rank', 'suit'])
# suit 花色
# rank 牌面大小
class FrenchDeck:
ranks = [str(x) for x in range(2, 11)] + list('JQKA')
suits = 'spades diamonds clubs hearts'.split()
def __init__(self):
self.cards = [Card(rank, suit) for suit in self.suits for rank in self.ranks]
def __len__(self):
return len(self.cards)
def __getitem__(self, item):
return self.cards[item]
new = FrenchDeck()
print(len(new)) # 纸牌个数
print(new.cards) # 所有纸牌
print(new[0]) # 第一个纸牌
print(random.choice(new)) # 随机抽取一个纸牌
print(new[:3]) # 切片 前三张牌
print(new[12::13]) # 切片 先抽出索引12的牌,再没隔13张牌拿一个
suits_values = dict(spades=3, hearts=2, diamonds=1, clubs=0)
def card_values(card):
"""纸牌的大小"""
rank_index = FrenchDeck.ranks.index(card.rank)
return rank_index * len(FrenchDeck()) + suits_values[card.suit]
# 按照大小,花色排序
for x in sorted(new, key=card_values):
print(x)