Python趣味案例 - 抓扑克牌的手气
扑克是流行全世界的一种纸牌。一副扑克牌有54张牌,其中52张是正牌,另2张是副牌(大王和小王)。52张正牌又均分为13张1组,共有黑桃、红桃、梅花、方块四组。每组花色的牌包括从2-10以及A、J、Q、K标示的13张牌。在比较流行的斗地主游戏中,三个玩家中除庄家外,另外两个玩家一人要拿17张牌。如果洗牌过程是完美的,那么对于一个玩家而言,拿到哪十七张牌是完全随机的。
本文引用自作者编写的下述图书; 本文允许以个人学习、教学等目的引用、讲授或转载,但需要注明原作者"海洋饼干叔
叔";本文不允许以纸质及电子出版为目的进行抄摘或改编。
1.《Python编程基础及应用》,陈波,刘慧君,高等教育出版社。免费授课视频 Python编程基础及应用
2.《Python编程基础及应用实验教程》, 陈波,熊心志,张全和,刘慧君,赵恒军,高等教育出版社Python编程基础及应用实验教程
3. 《简明C及C++语言教程》,陈波,待出版书稿。免费授课视频
下述程序首先生成了54张扑克牌,然后借助于随机数从中抽取17张牌。
#poker.py
import random #导入随机数模块
suits = ["♠","♥","♦","♣"] #四种花色
ranks = ["A","2","3","4","5","6","7","8","9","10","J","Q","K"] #13种牌面
#将花色与牌面组合并加上大小王,生成54张牌的列表
cards = [x+y for x in suits for y in ranks] + ["Red Joker", "Black Joker"]
#print(cards)
cardsHold = [] #持牌列表
for i in range(17): #循环17次,共取17张牌idx = random.randint(0,len(cards)-1) #生成一个0 到 剩余牌数-1的随机数c = cards.pop(idx) #将指定下标的牌取出cardsHold.append(c) #取出的牌添加至持牌列表cardsHold.sort() #持牌列表排序
print(cardsHold) #打印出来看看手气
执行结果:
['Red Joker', '♠10', '♠2', '♠J', '♣2', '♣5', '♣6', '♣A', '♣K', '♥6', '♥8', '♥A', '♥K', '♦10', '♦2', '♦4', '♦Q']
代码说明 | |
---|---|
random模块用于生成随机数。 | |
suits列表存储了4种不同的花色,分别对应黑桃,红桃,方块和梅花。 | |
ranks列表则存储了每种花色的13色牌面,从2-10,以及A, J, Q, K。 | |
cards列表借助于本章介绍的列表快速生成语法来生成,其内容形如:[‘Spades_A’, ‘Spades_2’, ‘Spades_3’… ];读者可以在cards列表生成后添加执行print(cards),查看其内容。请注意,大小王Red Joker和Black Joker也通过列表加法添加到了列表中。 | |
cardsHold列表用于存储已经拿到的牌。 | |
借助于range(17)数值列表,程序进行了17次循环。每一次都借助于random.randint()函数,生成一个从0到剩余牌数-1的随机数idx, 将后以idx为下标,从cards中弹出(pop)一张牌并存入cardsHold。容易看出,上述循环每执行一次,cards中的牌就会少一张,cardsHold中的牌就会多一张。 | |
为了便于迅速查看”手气“的好坏,这里使用了cardsHold.sort()对牌进行了排序。 |
请读者注意,因为“随机数”的存在,读者实际运行的结果几乎肯定与上述结果不同。请读者多次运行本程序,观察持牌序列的变化及”随机性“。
出于教学目的,有时我们会化简为繁。比如本例,从cards中随机抽出17张牌事实上不需要循环,使用下述代码可以直接办到:
random.shuffle(cards) #随机打乱
print(cards[:17]) #切片得前17张
但如果这样写,学生学不到算法的过程知识。
为了帮助更多的年轻朋友们学好编程,作者在B站上开了两门免费的网课,一门零基础讲Python,一门零基础C和C++一起学,拿走不谢!
简洁的C及C++
Python编程基础及应用
如果你觉得纸质书看起来更顺手,目前Python有两本,C和C++在出版过程中。
Python编程基础及应用
Python编程基础及应用实验教程
Python趣味案例 - 抓扑克牌的手气相关推荐
- python趣味案例编程 Pdf,小小的python编程故事
python编程 20 Python编程请选择编玩边学.Python是一种全新的程序设计语言,可以用它很容易地创造交互式故事情节.动画.游戏.他"我们的目的不是要创办电脑程序编写大军,而是帮 ...
- Python趣味案例——剪刀石头布小游戏改进版(自由实现三局两胜五局三胜七局四胜。。。)
前言 最近看了这篇知乎文章,深受启发: Python之石头剪刀布小游戏(史上最详细步骤) - 真小凡的文章 - 知乎 Python中实现剪刀石头布游戏的方式有很多种,这个博主允许直接输入石头.剪刀.布 ...
- 抓扑克牌的手气——三人手牌发放及叫地主机制
小白编写,请见谅 import random #导入随机数模块 suits = ["♠","♥","♦","♣"] #四 ...
- python人工智能应用实例_90后博士说,从Python到人工智能只差这35个趣味案例,越学越有趣...
有趣的生活每个人都向往,有趣的Python编程学习方式却不是每个人都体验过. 以这35个趣味案例开始,让兴趣成为学习Python最好的动力. 看看这35个趣味案例,几乎是每个案例都对应着一个Pytho ...
- python 股票图表_k线图分析法_【趣味案例】用Python绘制K线图,一眼看清股市状况...
本文介绍关于[趣味案例]用Python绘制K线图,一眼看清股市状况及神一般的裸k交易法,精髓就这三步,一目了然!精髓就这三步,一目了然!(附图解析)的相关内容. [趣味案例]用Python绘制K线图, ...
- python爬虫简单实例-最简单的Python爬虫案例,看得懂说明你已入门,附赠教程
原标题:最简单的Python爬虫案例,看得懂说明你已入门,附赠教程 这是最简单的Python爬虫案例,如果你能看懂,那么请你保持信心,因为你已经入门Python爬虫,只要带着信心和努力,你的技术能力在 ...
- python爬虫案例-Python爬虫案例集合
原标题:Python爬虫案例集合 urllib2 urllib2是Python中用来抓取网页的库,urllib2 是 Python2.7 自带的模块(不需要下载,导入即可使用) 在python2.x里 ...
- python趣味编程10例-Python趣味编程与精彩实例
Python趣味编程与精彩实例 共19 章,前12章主要以Python 基础知识如文件创建.输出与变量.输入与判断.运算符和循环.列表和字典.函数编程.pygame的各种知识为主,13-19章则以游戏 ...
- 《Python趣味创意编程》新书上架了
<Python趣味创意编程>案例视频 <Python趣味创意编程>新书上架,目前京东.淘宝.当当上搜书名就可以找到,比如: https://item.jd.com/130745 ...
最新文章
- 修改服务器端的访问模式,ftp服务器端 修改主动模式
- socket中select针对阻塞I/O复用注意的问题
- python中进程创建—fork()
- A - 顺序表应用1:多余元素删除之移位算法
- spring 13-Spring框架基于Annotation的AOP配置
- 10个痛点:IT部门如何面对边缘计算
- 自动柜员机属于微型计算机的一种,自动柜员机属于微型计算机的一种。( )...
- nodejs+vue+elementui宠物医院管理系统php-java-python
- 吉林大学超星学习通02(2)
- 网站 小图标 大全 url
- 安全技术 密钥安全_硬件安全密钥不断被人们追忆; 他们安全吗?
- 【OKR】11-12双月 OKR复盘
- ng2 绑定输出html,Angular2的数据绑定
- 小杜机器人线下店_小度首家官方体验店开业啦!线下体验小度系列产品 智能家居任你玩...
- USACO 奶牛食品(最大流)
- 程序员护眼心得——20171229
- 今日金融词汇--- 股权质押
- Python爬取高清无版权美图
- 互联网时代,政府如何应对网络舆情监测危机
- Post与Put的区别
热门文章
- 找到100亿个URL中重复的URL
- 【iOS】开发者账号
- 区别:αβ^T、βα^T、αα^T、(Aα)(Aα)^T、β^Tα、α^Tβ、α^Tα、(Aα)^T(Aα)
- Matplotlib_2
- 内地移动支付全球领先?醒醒吧,香港在这5个方面已赶超内地了!
- 开源是不是程序员悲剧的根源?
- 使用react制作点赞组件
- 利用依存分析完成开放领域关系抽取
- 微信小程序简易音频播放器(wx.getBackgroundAudioManager())
- 谷歌站内搜索-祝你流量翻倍!