基于Python制作一副扑克牌过程详解


Posted in Python onOctober 19, 2020

整理一下通过本文分享给大家, 该案例是通过 Python 类属性创建一幅除去大王、小王之后的 52 张扑克牌,并实现随机抽牌、排序、洗牌等功能;

创建一个纸牌类

一副扑克除去大王小王之外,剩下的 52 张纸牌以花色为基准(梅花、方块、黑桃、红心)可分为 4 组,每组有 13 张牌组成;因此可创建两个列表一个来存储花色,一个存储 13 个字符;通过两个列表之间的随机组合来生成 52 张纸牌,

代码如下:

基于Python制作一副扑克牌过程详解

代码中通过collections.namedtuple模块创建一个类来表示一幅纸牌,['rank','suit']分别表示纸牌中的字符(2-10,J-A)和花色;

FranchDeck 类来建 52 张纸牌,其中有两个特殊方法,len() 返回纸牌数量,__getitem__() 获取 position(索引) 下的指定纸牌

基于Python制作一副扑克牌过程详解

随机抽取一张牌

这里借助 random 模块实现随机抽牌的功能

基于Python制作一副扑克牌过程详解

列表迭代、切片

因为 __getitem__ 方法 把 [] 操作交给 self._cards 列表 ,除了上面提到的 index 定位之外,FranckDeck() 类还可实现切片、迭代操作;

基于Python制作一副扑克牌过程详解

排序操作

常规来说,依据点数来判断扑克牌的大小的话,2最小,A最大。实现点数排序是比较简单的,在创建点数列表时是以上面提到顺序进行创建,排序时只需按照 点数所在 index 作为基准进行排序即可,

除了 点数之外还有一个 花色也需要考虑,对于花色的话,需要建立一个映射基准(也可以称之为权重),不同花色赋予不同值;Python 的字典类型可以很方面地满足我们的需要

基于Python制作一副扑克牌过程详解

代码解读:

1,代码中利用字典加入了一个映射机制,黑桃为3,红心为2,方块次之,随后梅花;2,创建 spades_high 函数来计算 每张牌的权重总值;3,利用 sorted() 函数 key= spades_high 来作为排序基准,来实现扑克牌排序

洗牌操作

洗牌简单来说就是对一副扑克牌重新进行无规则地排序;正常情况random.shuffle 可以很方面地实现这个功能,但前提需要保证对象 满足可变协议,这里 FranchDeck() 是不满足的,直接使用的话会报错:

基于Python制作一副扑克牌过程详解

对于上面问题,只需要要把 此类由不变变成可变的即可,创建一个函数赋值为 __setitem__ 属性

基于Python制作一副扑克牌过程详解

这里抽取到打乱前后纸牌的前 5 个元素,已经实现洗牌的功能了!

根据以上的代码部分,可以进一步开发, 提前设计好 54 张扑克牌的可视化图片,

基于Python制作一副扑克牌过程详解

创建一个 key:value 映射关系,对扑克牌字符与可视化图片之间创建一个映射关系,如下图所示,把此关系集存储到指定数据库或文件中,后面使用后可直接调用

基于Python制作一副扑克牌过程详解

按照上面的进阶玩法就可以创建一个基于Python开发扑克牌小程序!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用Python编写一个国际象棋AI程序
Nov 28 Python
详解Python网络爬虫功能的基本写法
Jan 28 Python
Python实现简单过滤文本段的方法
May 24 Python
Python中定时任务框架APScheduler的快速入门指南
Jul 06 Python
python opencv实现图片旋转矩形分割
Jul 26 Python
python 监听salt job状态,并任务数据推送到redis中的方法
Jan 14 Python
python itchat实现调用微信接口的第三方模块方法
Jun 11 Python
python读写csv文件并增加行列的实例代码
Aug 01 Python
python实现多线程端口扫描
Aug 31 Python
vscode 配置 python3开发环境的方法
Sep 19 Python
pytorch下使用LSTM神经网络写诗实例
Jan 14 Python
Python3读写ini配置文件的示例
Nov 06 Python
Python实现壁纸下载与轮换
Oct 19 #Python
Python调用REST API接口的几种方式汇总
Oct 19 #Python
Python爬虫抓取论坛关键字过程解析
Oct 19 #Python
python MD5加密的示例
Oct 19 #Python
python Yaml、Json、Dict之间的转化
Oct 19 #Python
Python pip 常用命令汇总
Oct 19 #Python
Python环境使用OpenCV检测人脸实现教程
Oct 19 #Python
You might like
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
2007/02/11 PHP
PHP验证信用卡卡号是否正确函数
2015/05/27 PHP
javascript控制frame,iframe的src属性代码
2009/12/31 Javascript
Jquery submit()无法提交问题
2013/04/21 Javascript
非html5实现js版弹球游戏示例代码
2013/09/22 Javascript
js跨域问题浅析及解决方法优缺点对比
2014/11/08 Javascript
String字符串截取的四种方式总结
2016/11/28 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
2017/02/22 Javascript
Node.js读取文件内容示例
2017/03/07 Javascript
vue.js中过滤器的使用教程
2017/06/08 Javascript
Vue异步组件处理路由组件加载状态的解决方案
2018/09/07 Javascript
Vue项目中使用better-scroll实现一个轮播图自动播放功能
2018/12/03 Javascript
Node.js一行代码实现静态文件服务器的方法步骤
2019/05/07 Javascript
jquery ajax 请求小技巧实例分析
2019/11/11 jQuery
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
2020/05/18 Javascript
vue实现移动端H5数字键盘组件使用详解
2020/08/25 Javascript
[02:25]DOTA2英雄基础教程 熊战士
2014/01/03 DOTA
用Python编程实现语音控制电脑
2014/04/01 Python
python 读取文件并替换字段的实例
2018/07/12 Python
详解python配置虚拟环境
2019/04/08 Python
Python分析彩票记录并预测中奖号码过程详解
2019/07/09 Python
解决python-docx打包之后找不到default.docx的问题
2020/02/13 Python
python实现简单的五子棋游戏
2020/09/01 Python
美国购买当代和现代家具网站:MODTEMPO
2018/07/20 全球购物
高中生期末评语大全
2014/01/28 职场文书
小学生开学第一课活动方案
2014/03/27 职场文书
求职信内容怎么写
2014/05/26 职场文书
公司开业庆典策划方案
2014/06/04 职场文书
2014年团队工作总结
2014/11/24 职场文书
经典搞笑版检讨书
2015/02/19 职场文书
幽灵公主观后感
2015/06/09 职场文书
职工培训工作总结
2015/08/10 职场文书
导游词之云南丽江-泸沽湖
2019/09/26 职场文书
OpenCV-Python模板匹配人眼的实例
2021/06/08 Python
Spring实现内置监听器
2021/07/09 Java/Android
20180830晚上第一届KSL半决赛 雨神vs解冻(二龙 三炮解说)
2022/04/01 星际争霸