Python面向对象编程1-面向过程的简单纸牌游戏程序 项目1.4 打印牌的点数和花色

本文主要是介绍Python面向对象编程1-面向过程的简单纸牌游戏程序 项目1.4 打印牌的点数和花色,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

总项目目标:用面向过程思想设计一个简单的纸牌游戏程序,称为"Higher or Lower"(高还是低)。游戏中,玩家需要猜测接下来的一张牌是比当前牌高还是低。根据猜测的准确性,玩家可以得到或失去相应的积分。为后续对比面向对象编程思想做准备。

项目1.4   打印抽出牌的点数和花色

import randomSUIT_TUPLE = ('黑桃', '红心', '梅花', '方块')
RANK_TUPLE = ('A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K')#洗牌函数
def shuffle(deckListIn):deckListOut = deckListIn.copy()  # 生成一副牌的副本random.shuffle(deckListOut)  # 洗牌return deckListOut#抽牌函数
def getCard(deckListIn):thisCard = deckListIn.pop()  # 从牌组中取第一张牌return thisCard#存储生成的初始牌组
startingDeckList = []#两个嵌套的循环创建一个包含牌的字典cardDict,其中包括点数、花色和用于比较大小的值
#并将各张牌的字典添加到startingDeckList列表中。
for suit in SUIT_TUPLE:for thisValue, rank in enumerate(RANK_TUPLE):cardDict = {'rank': rank, 'suit': suit, 'value': thisValue + 1}startingDeckList.append(cardDict)#洗牌,将返回的洗牌后的牌组赋值给gameDeckList
gameDeckList = shuffle(startingDeckList)#抽取一张牌,将该牌的信息以字典形式保存在currentCardDict中
currentCardDict = getCard(gameDeckList)#通过字典索引将抽取的牌的点数、花色和用于比较大小的值分别赋值
currentCardRank = currentCardDict['rank']
currentCardValue = currentCardDict['value']
currentCardSuit = currentCardDict['suit']#打印输出当前抽取的牌的信息,包括花色和点数,以及用于比较大小的值
print('当前抽出的牌是', currentCardSuit+currentCardRank)
print("当前抽出的牌用于比较大小的值为", currentCardValue)

效果如下:

程序分析:

这段程序的功能是模拟一副扑克牌的洗牌和抽牌过程,并输出当前抽取的牌的信息。

程序定义了两个函数用于洗牌和抽牌

接下来,创建一个空列表startingDeckList,用于存储生成的牌组。

通过两个嵌套的循环创建一个包含牌的字典cardDict,其中包括点数、花色和用于比较大小的值,并将该字典添加到startingDeckList列表中。

接下来,调用shuffle()函数对startingDeckList进行洗牌,将返回的洗牌后的牌组赋值给gameDeckList

然后,调用getCard()函数从洗牌后的牌组gameDeckList中抽取一张牌,将该牌的信息以字典形式保存在currentCardDict中。

通过字典索引将抽取的牌的点数、花色和用于比较大小的值分别赋值给currentCardRankcurrentCardSuitcurrentCardValue变量。

最后,程序打印输出当前抽取的牌的信息,包括花色和点数,以及用于比较大小的值。

注意:由于牌组是随机洗牌的,每次运行程序的结果可能不同。

这篇关于Python面向对象编程1-面向过程的简单纸牌游戏程序 项目1.4 打印牌的点数和花色的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/xpala/article/details/131265807
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/847561

相关文章

Python实现批量提取BLF文件时间戳

《Python实现批量提取BLF文件时间戳》BLF(BinaryLoggingFormat)作为Vector公司推出的CAN总线数据记录格式,被广泛用于存储车辆通信数据,本文将使用Python轻松提取... 目录一、为什么需要批量处理 BLF 文件二、核心代码解析:从文件遍历到数据导出1. 环境准备与依赖库

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre

游戏闪退弹窗提示找不到storm.dll文件怎么办? Stormdll文件损坏修复技巧

《游戏闪退弹窗提示找不到storm.dll文件怎么办?Stormdll文件损坏修复技巧》DLL文件丢失或损坏会导致软件无法正常运行,例如我们在电脑上运行软件或游戏时会得到以下提示:storm.dll... 很多玩家在打开游戏时,突然弹出“找不到storm.dll文件”的提示框,随后游戏直接闪退,这通常是由于

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

java内存泄漏排查过程及解决

《java内存泄漏排查过程及解决》公司某服务内存持续增长,疑似内存泄漏,未触发OOM,排查方法包括检查JVM配置、分析GC执行状态、导出堆内存快照并用IDEAProfiler工具定位大对象及代码... 目录内存泄漏内存问题排查1.查看JVM内存配置2.分析gc是否正常执行3.导出 dump 各种工具分析4.

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

Python错误AttributeError: 'NoneType' object has no attribute问题的彻底解决方法

《Python错误AttributeError:NoneTypeobjecthasnoattribute问题的彻底解决方法》在Python项目开发和调试过程中,经常会碰到这样一个异常信息... 目录问题背景与概述错误解读:AttributeError: 'NoneType' object has no at

Python使用openpyxl读取Excel的操作详解

《Python使用openpyxl读取Excel的操作详解》本文介绍了使用Python的openpyxl库进行Excel文件的创建、读写、数据操作、工作簿与工作表管理,包括创建工作簿、加载工作簿、操作... 目录1 概述1.1 图示1.2 安装第三方库2 工作簿 workbook2.1 创建:Workboo