python定义一个列表存放52张扑克牌_Python 制作一副扑克牌,有趣的案例!

之前在 《流畅的 Python 》中看到一个例子比较有趣,所以整理一下通过本文分享给大家, 该案例是通过 Python 类属性创建一幅除去 大王、小王之后的 52 张扑克牌,并实现随机抽牌、排序、洗牌等功能;

创建一个纸牌类

一副扑克除去大王小王之外,剩下的 52 张纸牌以花色为基准(梅花、方块、黑桃、红心)可分为 4 组,每组有 13 张牌组成;因此可创建两个列表一个来存储花色,一个存储 13 个字符;通过两个列表之间的随机组合来生成 52 张纸牌,

代码如下:

import collections

Card = collections.namedtuple("Card",['rank','suit'])

class FrenchDeck:

ranks = [str(n) for n 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, position):

return self._cards[position]

代码中通过 collections.namedtuple 模块创建一个类来表示一幅纸牌,[’rank','suit'] 分别表示纸牌中的字符(2-10,J-A)和花色;

FranchDeck 类来建 52 张纸牌,其中有两个特殊方法,len() 返回纸牌数量,__getitem__() 获取 position(索引) 下的指定纸牌

# 用 Card 创建一张纸牌

beer_card = Card('7','diamonds')

print(beer_card) # 打印输出

deck = FrenchDeck()

print('len is -----')

print(len(deck))

# 返回首张 纸牌

print(deck[0])

# 返回最后一张纸牌

你可能感兴趣的:(python定义一个列表存放52张扑克牌_Python 制作一副扑克牌,有趣的案例!)