美文网首页
python-扑克牌

python-扑克牌

作者: 农村高富帅 | 来源:发表于2018-11-30 19:16 被阅读0次

    前言

    接下来项目中需要用到python,基础看了几日,下午实现了一个简单的demo,扑克牌模型,记录一哈。

    开始

    • 通过 namedtuple 创建一个 card 类,表示单张牌
    # namedtuple是继承自tuple的子类。namedtuple创建一个和tuple类似的对象,而且对象拥有可访问的属性。
    # 一般情况下创建只包含少量属性的类的时候可以通过这种方式,简单方便
    # 创建一个 card 类,包含rank(大小)和suit(花色)属性
    Card = collections.namedtuple('Card', ['rank', 'suit'])
    
    • 创建一副扑克牌类 PokerCard ,并且实现通过下表获取单张扑克牌和获取整副扑克牌的数量方法,即实现_len和_getitem方法。为了实现起来简单,就没有加入大小王
    class PokerCard(object):
        # 列表生成式,牌大小
        ranks = list(str(n) for n in range(2,11)) + ['J','Q','K','A']
        # 牌花色
        suits = ['♥','♦','♠','♣']
    
        def __init__(self):
            # 列表生成式
            # 创建对象时自动赋值_cards
            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,postion):
            return self._cards[postion]
    

    使用(测试)

    • 测试牌数量
    from gzm import PokerCard
    deck = PokerCard.PokerCard()
    print(len(deck))
    
    • 打印结果


      image.png
    • 打印所有扑克牌

    deck = PokerCard.PokerCard()
    cards = list(card for card in deck)
    print('所有扑克牌:')
    for card in cards:
        print(card)
    
    • 所有扑克牌结果
    image.png
    • 随机抽取一张扑克牌
    from random import choice
    
    deck = PokerCard.PokerCard()
    print('随机抽取四次:')
    for n in range(0,4):
        card = choice(deck)
        print(card)
    
    • 随机抽取四次结果


      image.png

    结束

    • demo 过于简单,就补贴源码了
    • demo 参考于《流畅的python》一书

    相关文章

      网友评论

          本文标题:python-扑克牌

          本文链接:https://www.haomeiwen.com/subject/ukfkcqtx.html