前言
接下来项目中需要用到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))
-
打印结果
打印所有扑克牌
deck = PokerCard.PokerCard()
cards = list(card for card in deck)
print('所有扑克牌:')
for card in cards:
print(card)
- 所有扑克牌结果
- 随机抽取一张扑克牌
from random import choice
deck = PokerCard.PokerCard()
print('随机抽取四次:')
for n in range(0,4):
card = choice(deck)
print(card)
-
随机抽取四次结果
结束
- demo 过于简单,就补贴源码了
- demo 参考于《流畅的python》一书