Python-简单模拟斗地主洗牌发牌

2023-12-01 11:28

本文主要是介绍Python-简单模拟斗地主洗牌发牌,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

额滴名片儿

🎈 博主:一只程序猿子

🎈 博客主页:一只程序猿子 博客主页

🎈 个人介绍:爱好(bushi)编程!

🎈 创作不易:如喜欢麻烦您点个👍或者点个⭐

🎈 欢迎访问我的主页(点我直达)

🎈 除此之外您还可以通过个人名片联系我 👉👉👉👉👉👉

如果您很喜欢我的文章且富有,我说:公主 or 王子 请打赏!!!

求打赏🥺

疯狂暗示👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉

疯狂暗示👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉

疯狂暗示👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉

疯狂暗示👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉

疯狂暗示👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉

疯狂暗示👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉👉

目录

1.介绍

2.random库

3.代码实现

4.效果展示


1.介绍

        本文将介绍如何使用Python模拟斗地主的洗牌与发牌,首先创建一副完整的扑克牌,其次使用了Python的random库来实现随机洗牌,然后继续使用random库实现随机抽取三张牌作为底牌,最后把剩下的牌发给三名玩家。   

        如果你感兴趣,还可以尝试实现在抽取三张底牌之后从剩下的牌里随机选择一张牌作为地主牌!等牌全部发到玩家手里后根据地主牌判断谁是地主并且把三张底牌划分到地主手中!

2.random库

        Python的random库是Python标准库中提供的一个随机数生成器,用于生成在一定范围内的随机整数或浮点数。这个库提供了一系列函数来模拟基本的随机数生成,同时保持了可移植性和效率。

        以下是random库中一些常用的函数:

  1. random():生成一个0到1之间的随机浮点数。
  2. randint(a, b):生成一个a到b之间的随机整数,包括a和b。
  3. randrange(a, b):从a开始,到b-1结束,以步长1进行随机取整。
  4. choice(seq):从非空序列中随机选取一个元素。
  5. shuffle(lst):将序列lst进行随机排序。
  6. sample(seq, k):从序列中随机选取k个元素,返回选取的元素组成的列表。

        这些函数可以用于各种场景,例如在数据科学中进行随机采样,或者在游戏开发中生成随机数以决定游戏结果。

3.代码实现

        poker_shuffling.py(完整源码):

'''
定义花牌形式:
'♠':黑桃
'♥':红桃
'♣':梅花
'♦':方块
'''import randomclass PokerCards():def __init__(self):self.Suits = ['♠', '♥', '♣', '♦']  # 定义所有花色# 创建一副扑克牌def create_poker_cards(self):# 定义一个列表用来存储扑克牌new_poker_cards = list()# 定义52张花牌,四种花色,for i in range(1, 14):for suit in self.Suits:# range是前闭后开区间,也就是说包含开始值但是不包含结束值if i == 1:rank = 'A'elif i <= 10:rank = ielse:jqk = ['J', 'Q', 'K']rank = jqk[i - 11]poker_card = f"|{suit} {rank}|"# 把这张牌存到列表new_poker_cards.append(poker_card)# 把大小王存入列表new_poker_cards.append("|JOKER|")new_poker_cards.append("|joker|")print(f"这是一桌新牌:\n {new_poker_cards}\n")return new_poker_cards# 洗牌def shuffle(self, cards_list):poker_cards = list(cards_list)  # 复制这个列表# random.shuffle()函数可以随机打乱列表的顺序random.shuffle(poker_cards)print(f"这是洗好的牌:\n {poker_cards}\n")return poker_cards# 发牌def deal_cards(self, poker_cards):# 先随机抽取三张牌做底牌dipai = random.sample(poker_cards, 3)for item in dipai:poker_cards.remove(item)print(f"这是底牌:\n {dipai}\n")# 定义三个list存放三个用户的手牌USER_A = list()USER_B = list()USER_C = list()# 开始发牌while(True):# 判断牌是否发完,没发完就继续发if poker_cards:     # 同 if len(poker_cards) != 0:USER_A.append(poker_cards.pop(0))USER_B.append(poker_cards.pop(0))USER_C.append(poker_cards.pop(0))# print('hh')else:# 当全部牌发完,结束循环break# 定义一个字典存放用户名和三个用户的手牌user_dict = {"USER_A":USER_A,"USER_B":USER_B,"USER_C":USER_C}# 遍历这个字典for key, value in  user_dict.items():print(f"这是  {key}   的手牌:\n{value}")def run(self):# 获取一桌新牌new_poker_cards = self.create_poker_cards()# 洗牌poker_cards = self.shuffle(new_poker_cards)# 发牌self.deal_cards(poker_cards)if __name__ == '__main__':# 运行洗牌发牌程序PokerCards().run()

4.效果展示

 

这篇关于Python-简单模拟斗地主洗牌发牌的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/440977

相关文章

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e