斗地主的游戏大家都玩过,那么怎么用Python如何用最少的代码写出一副牌,并实现自动洗牌的功能呢?接下来,我就带大家来实现这个功能
首先用collections.namedtuple构建一个简单的类,来表示一张纸牌
import collections
card = collections.namedtuple('纸牌',['点数','花色'])
class FrenchDeck:
ranks = [str(n) for n in range(2,11)] + list('JQKA') #ranks为点数
suits = '黑桃 方片 梅花 红桃'.split() #suits为花色
#黑桃:spades 方片:diamonds 梅花:clubs 红桃:hearts
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]
接下来我们输出一下
beer_card = card('9','黑桃')
print(beer_card)
运行结果为:
很轻松就得到了一个纸牌对象
我们再看看一叠牌一个有多少张牌,就要用到FrenchDeck函数了,它既短小又精悍,再结合len()函数就能实现啦
deck = FrenchDeck()
print(len(deck))
输出结果为:
这是没有包括大小王的,刚好52张。
接下来我们从中抽取特定的一张纸牌,比如第一张和最后一张: