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 random

class 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 = i
				else:
					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.效果展示

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/206177.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

组合(回溯算法)

77. 组合 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 样例输入 示例 1&#xff1a; 输入&#xff1a;n 4, k 2 输出&#xff1a; [[2,4],[3,4],[2,3],…

Linux基本指令(中篇)

目录 8.cp指令&#xff08;重要&#xff09; 9.mv指令&#xff08;重要&#xff09;&#xff1a; 10.cat指令&#xff08;适合查看小文件内容&#xff09; 11.more指令&#xff08;适合查看大文件内容&#xff09; 12.less指令&#xff08;重要&#xff09; 13.head指令和…

开源众筹平台系统源码/高仿某滴筹平台源码/PHP源码/互助众筹系统网站源码

源码简介&#xff1a; 开源众筹平台系统源码&#xff0c;它是高仿某滴筹平台源码&#xff0c;互助众筹系统网站源码&#xff0c;作为PHP源码&#xff0c;很实用。 高仿水滴筹源码,全开源uniappfastadmin开发 这套是uniapp 开发源码,非常人性化,可以随意二开 源码链接&#xf…

上门服务系统|东郊到家软件提供高效服务的科技支柱

预约上门服务系统的崛起改变了传统服务行业的格局。用户不再需要亲自前往实体店面&#xff0c;而是通过几次点击就能享受到各类服务。这背后离不开预约上门服务系统的智能化和高效性&#xff0c;而源码正是这个系统的灵魂所在。下面小编就给大家介绍下上门服务系统开发优势。 1…

智能优化算法应用:基于风驱动算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于风驱动算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于风驱动算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.风驱动算法4.实验参数设定5.算法结果6.参考文献7.…

[c++]—string类___深度学习string标准库成员函数与非成员函数

要相信别人能做出来自己一定可以做出来&#xff0c;只不过是时间没到而已 目录 &#x1f6a9;string类对象capacity操作 &#x1f4bb;reserve()保留 &#x1f4bb;resize() &#x1f6a9;string类对象元素访问操作 &#x1f4bb;operator[]和at() &#x1f4bb;operator…

EasyExcel如何读取全部Sheet页数据方法

一、需求描述 Excel表格里面大约有20个sheet页&#xff0c;每个sheet页65535条数据&#xff0c;需要读取全部数据&#xff0c;并导入至数据库。 找了好多种方式&#xff0c;EasyExcel比较符合&#xff0c;下面看代码。 二、实现方式 采用EasyExcel框架的doReadAll()方法 1、…

Ranger安装和使用

Ranger部署 1.准备 1.1 编译 Ranger编译&#xff08;已经编译过的话&#xff0c;直接看1.2&#xff09; 1.1.1 准备到Ranger官网下载ranger的源码&#xff1a;http://ranger.apache.org/download.html 1.1.2 Ranger编译的过程实在非虚拟机环境下完成的&#xff0c;下载好r…

中职组网络安全-PYsystem003.img(环境+解析)

​ web安全渗透 1.通过URL访问http://靶机IP/1&#xff0c;对该页面进行渗透测试&#xff0c;将完成后返回的结果内容作为flag值提交&#xff1b; 访问该网页后发现F12被禁用&#xff0c;使用ctrlshifti查看 ctrlshifti 等效于 F12 flag{fc35fdc70d5fc69d269883a822c7a53e} …

应用分发平台怎么看数据

地图统计 ●所有版本应用内测包体总统计地图方便更容易看到地区和用户的聚集 折线统计 ●所有版本应用内测包体总统计方便分析每天的测试状态&#xff0c;方便调整策略 数字统计 ●所有版本应用内测包体总统计数字看到直观的数据

基于社区电商的Redis缓存架构-用户分享内容的分页列表缓存延迟构建以及异步通知缓存重建

分页列表缓存的延迟构建 首先&#xff0c;先来讲一下业务场景&#xff0c;用户会在 APP 中去分享内容&#xff0c;那么假如用户分享的是美食菜谱内容&#xff0c;在用户分享之后&#xff0c;先将这个美食菜谱的内容作为 k-v 进行缓存&#xff0c;但是呢&#xff0c;其实对于用…

如何计算数据泄露的成本

现在&#xff0c;几乎所有类型的组织每天都在发生企业 IT 网络遭到破坏的情况。它们是任何合规官员最担心的问题&#xff0c;并且找出更好的方法来防止它们或从中恢复是合规官员永远不会远离的想法。 但数据泄露的实际成本是多少&#xff1f;该数字从何而来&#xff1f;当您获…

无人机助力电力设备螺母缺销智能检测识别,python基于YOLOv7开发构建电力设备螺母缺销高分辨率图像小目标检测系统

传统作业场景下电力设备的运维和维护都是人工来完成的&#xff0c;随着现代技术科技手段的不断发展&#xff0c;基于无人机航拍飞行的自动智能化电力设备问题检测成为了一种可行的手段&#xff0c;本文的核心内容就是基于YOLOv7来开发构建电力设备螺母缺销检测识别系统&#xf…

unity学习笔记13

一、常用物理关节 Unity中的物理关节&#xff08;Physics Joints&#xff09;是用于在游戏中模拟和控制物体之间的连接。物理关节允许你在对象之间应用各种约束&#xff0c;例如旋转、移动或固定连接&#xff0c;以模拟真实世界中的物理交互。 物理关节类型&#xff1a; 1.F…

VUE2+THREE.JS 模型上方显示信息框/标签(CSS3DSprite精灵模型)

THREE.JS 模型上方显示信息框/标签---CSS3DSprite精灵模型 1.CSS2DRenderer/CSS3DRenderer/Sprite的优劣2.实现模型上方显示信息框2.1 引入2.2 初始化加载的时候就执行此方法2.3 animate循环执行2.4 获取设备状态并在每个设备上显示设备状态2.5 样式 CSS3DSprite精灵模型面向摄…

【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(1)项目搭建

项目笔记为项目总结笔记,若有错误欢迎指出哟~ 【项目专栏】 【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(1)项目搭建 持续更新中… java+vue+微信小程序项目】从零开始搭建——健身房管理平台 项目简介Java项目搭建(IDEA)1.新建项目2.项目类型3.项目设置4…

【Node.js】笔记整理4 - 版本管理工具nvm

写在最前&#xff1a;跟着视频学习只是为了在新手期快速入门。想要学习全面、进阶的知识&#xff0c;需要格外注重实战和官方技术文档&#xff0c;文档建议作为手册使用 系列文章 【Node.js】笔记整理 1 - 基础知识【Node.js】笔记整理 2 - 常用模块【Node.js】笔记整理 3 - n…

《微信小程序开发从入门到实战》学习三十七

4.2 云开发JSON数据库 4.2.8 分页查询 在计算机互联网时代&#xff0c;很多页面底部分页导航按钮&#xff0c;有首页、上一页、第一页、第二页、尾页。 分页查询是指根据页码将每一页的数据查询出来。 在移动互联网时代&#xff0c;网页和应用都对网页进行优化&#xff0c;…

【Serverless架构组成及优势适用场景】

目录 引言 一、无服务器函数&#xff08;Serverless Functions&#xff09; 二、事件驱动&#xff08;Event-Driven&#xff09; 三、自动扩展&#xff08;Auto Scaling&#xff09; 四、按需计费&#xff08;On-Demand Billing&#xff09; 五、无状态&#xff08;State…

程序/进程替换(讲解)

本文旨在讲解进程替换的知识&#xff01;希望读完本文&#xff0c;能使读者对进程替换有更深一步的认识&#xff01;&#xff01;好的&#xff0c;废话不多说&#xff0c;干货来了&#xff01; 进程替换的引进&#xff01; 为什么要引进进程替换呢&#xff1f;我们创建子进程总…