python-扑克牌

前言

接下来项目中需要用到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))
  • 打印结果


    python-扑克牌_第1张图片
    image.png
  • 打印所有扑克牌

deck = PokerCard.PokerCard()
cards = list(card for card in deck)
print('所有扑克牌:')
for card in cards:
    print(card)
  • 所有扑克牌结果
python-扑克牌_第2张图片
image.png
  • 随机抽取一张扑克牌
from random import choice

deck = PokerCard.PokerCard()
print('随机抽取四次:')
for n in range(0,4):
    card = choice(deck)
    print(card)
  • 随机抽取四次结果


    python-扑克牌_第3张图片
    image.png

结束

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

你可能感兴趣的:(python-扑克牌)