用Python创建扑克牌(无大小王)并实现自动洗牌功能

斗地主的游戏大家都玩过,那么怎么用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张。

接下来我们从中抽取特定的一张纸牌,比如第一张和最后一张:


                
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值