一、说明

参考资料为维基百科的 Playing Card 词条,非严肃性论证,只是对代码为什么这么写做讨论。

二、扑克牌的起源

import collections

Card = 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 = 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')

看到 "beer_card" 的时候,也是好奇为啥用 "beer" 呢?参考维基百科 Beer card 词条,beer card 是对方块7的非正式称呼,至于游戏怎么玩,我不是很懂,这里不赘述。

最新文章

  1. 慎重管理SQL Server服务的登录(启动)账户和密码
  2. 安装yii2时出错 Invalid Parameter – yii\base\InvalidParamException
  3. python 列表排序
  4. js处理匿名函数
  5. Wifi长距离传输
  6. [ASP.NET MVC]笔记(一)模型和HTML辅助方法
  7. Python内置函数(54)——callable
  8. 神奇的ASCⅡ码图
  9. BZOJ_1925_[Sdoi2010]地精部落_递推
  10. Mesos源码分析(15): Test Executor的运行
  11. [Leetcode]674. Longest Continuous Increasing Subsequence
  12. 开发中经常遇到SVN清理失败的问题:
  13. 工欲善其事,必先利其器-ecplise配置和优化
  14. LeetCode(60): 第k个排列
  15. silverlight处理gif格式图片
  16. zabbix3.4.7版本饼图显示问题
  17. 20171126--idleHadnler的理解使用
  18. 添加静态路由 route add -host 子网掩码 -- 在线解析
  19. 〖Android〗Nexus 7 flo (razor) 刷入Recovery/CM-11.0后卡在开机动画的解决方法
  20. [图解tensorflow源码] Session::Run() 分布式版本

热门文章

  1. isNotEmpty 与 isNotBlank 的区别
  2. Vue-router实现单页面应用在没有登录情况下,自动跳转到登录页面
  3. 微信小程序&mpvue问题总结(1)
  4. linux系统引导过程
  5. 【uniapp 开发】工具类 -- MathUtil
  6. PAT A1001 A+B Format
  7. EL表达式详解(常用表达式以及取值)
  8. 小程序中引入iconfont
  9. Python入门-系统模块time
  10. python---二维数组的查找