基于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分析nignx访问日志脚本分享
Feb 26 Python
python中requests爬去网页内容出现乱码问题解决方法介绍
Oct 25 Python
tensorflow 1.0用CNN进行图像分类
Apr 15 Python
Python 将pdf转成图片的方法
Apr 23 Python
selenium+python自动化测试之页面元素定位
Jan 23 Python
Python实现统计英文文章词频的方法分析
Jan 28 Python
Django框架序列化与反序列化操作详解
Nov 01 Python
使用python实现多维数据降维操作
Feb 24 Python
Python3 io文本及原始流I/O工具用法详解
Mar 23 Python
Python 日期与时间转换的方法
Aug 01 Python
python两种获取剪贴板内容的方法
Nov 06 Python
python 如何用urllib与服务端交互(发送和接收数据)
Mar 04 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
深入PHP运行环境配置的详解
2013/06/04 PHP
php结合ACCESS的跨库查询功能
2015/06/12 PHP
PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】
2017/07/03 PHP
jQuery 学习第六课 实现一个Ajax的TreeView
2010/05/17 Javascript
基于jquery的拖动布局插件
2011/11/25 Javascript
jquery中dom操作和事件的实例学习 下拉框应用
2011/12/01 Javascript
jQuery 获取URL的GET参数值的小例子
2013/04/18 Javascript
JS 对输入框进行限制(常用的都有)
2013/07/30 Javascript
jQuery中live()方法用法实例
2015/01/19 Javascript
NodeJS中利用Promise来封装异步函数
2015/02/25 NodeJs
jQuery预加载图片常用方法
2015/06/15 Javascript
sencha ext js 6 快速入门(必看)
2016/06/01 Javascript
jquery——九宫格大转盘抽奖实例
2017/01/16 Javascript
php简单数据库操作类的封装
2017/06/08 Javascript
Vue.js数据绑定之data属性
2017/07/07 Javascript
Vue.js中组件中的slot实例详解
2017/07/17 Javascript
vue使用自定义icon图标的方法
2018/05/14 Javascript
浅谈webpack SplitChunksPlugin实用指南
2018/09/17 Javascript
详解简单易懂的 ES6 Iterators 指南和示例
2019/09/24 Javascript
微信小程序事件流原理解析
2019/11/27 Javascript
Vue自定义render统一项目组弹框功能
2020/06/07 Javascript
PHP webshell检查工具 python实现代码
2009/09/15 Python
详解Django框架中用context来解析模板的方法
2015/07/20 Python
python 迭代器和iter()函数详解及实例
2017/03/21 Python
Python面向对象class类属性及子类用法分析
2018/02/02 Python
python多线程之事件Event的使用详解
2018/04/27 Python
Python爬虫框架Scrapy常用命令总结
2018/07/26 Python
Python PIL库图片灰化处理
2020/04/07 Python
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
Tessabit美国:集世界奢侈品和设计师品牌的意大利精品买手店
2020/06/29 全球购物
致1500米运动员广播稿
2014/02/07 职场文书
2014年教师节红领巾广播稿
2014/09/10 职场文书
审查起诉阶段律师意见书
2015/05/19 职场文书
留学文书中的个人陈述,应该注意哪些问题?
2019/08/23 职场文书
南阳市白酒市场的调查报告
2019/11/08 职场文书
SpringBoot中使用Redis作为全局锁示例过程
2022/03/24 Java/Android