一、说明
参考资料为维基百科的 Playing Card 词条,非严肃性论证,只是对代码为什么这么写做讨论。
二、扑克牌的起源
import collectionsCard = collections.namedtuple('Card', ['rank', 'suit'])class FrenchDeck:
ranks = [str(n) for n in range(2, 11)] + list('JQKA')
suits = 'spades diamonds clubs hearts'.split()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]
类名为“FrenchDeck”——看书的时候还好奇为什么使用“French”呢,难道扑克牌是法国人发明的?根据维基百科的解释:
The most common type of playing card is that found in the French-suited,standard 52-card deck.
即最常见的纸牌类型是法国式的标准52张纸牌(注:代码里没包括“鬼牌”)。三、花色顺序
suit_values = dict(spades=3, hearts=2, diamonds=1, clubs=0)def spades_high(card):
rank_value = https://www.it610.com/article/FrenchDeck.ranks.index(card.rank)
return rank_value * len(suit_values) + suit_values[card.suit]
花色顺序为:spades(黑桃) > hearts(红桃) > diamonds(方块) > clubs(梅花)(注:可以按首字母顺序进行记忆:s > h > d > c)。(注:花色的名称和顺序在不同的地方稍有不同,在我自己的家乡是:spades(大花) > hearts(马屁) > clubs(梅花) > diamonds(尖肝))
四、beer card
>>> beer_card = Card('7', 'diamonds')
>>> beer_card
Card(rank='7', suit='diamonds')
【关于扑克牌的一些讨论——《Fluent Python 2》读书笔记】看到 "beer_card" 的时候,也是好奇为啥用 "beer" 呢?参考维基百科 Beer card 词条,beer card 是对方块7的非正式称呼,至于游戏怎么玩,我不是很懂,这里不赘述。
推荐阅读
- 使用正则表达式清除字符串
- 深入研究不平衡数据
- 使用Python的潜在语义分析
- 机器学习黑色星期五数据集分析
- 在Python中使用PostgreSQL
- 循环学习率简介
- Python中的装饰器
- 数据集|KITTI数据集简介(一) — 激光雷达数据
- 将机器学习模型转换为Python中的API