Python实现24点游戏

24点游戏是一种数学益智游戏,它的目标是通过使用加法、减法、乘法和除法这四种基本算术运算,使得四个数字的结果等于24。这个游戏不仅能锻炼玩家的数学计算能力,还能提高逻辑思维和快速反应能力。

游戏规则非常简单:

  1. 游戏通常使用一副扑克牌中的1到10的数字牌,去掉大小王和J、Q、K,因为这些牌没有具体的数值。
  2. 每次从牌堆中抽取四张牌,或者由玩家随机选择四张数字牌。
  3. 玩家需要使用这四张牌上的数字,通过加、减、乘、除的组合,得出结果为24的算式。
  4. 每个数字必须且只能使用一次。
  5. 运算的顺序没有限制,可以使用括号来改变运算顺序。
  6. 完成算式后,可以使用计算器验证结果是否正确。

24点游戏有多种解法,一个数字组合可能有多种不同的算式可以得到24。例如,使用数字2、3、4、5,可以得到以下算式之一:

  • (5 - 2) * (3 + 4) = 24
  • (5 - 3) * (4 + 2) = 24
  • 4 * (5 - 2) + 3 = 24
  • 等等。

这个游戏适合各个年龄段的人玩,可以单独挑战,也可以和朋友或家人一起竞赛,看谁能更快地找到正确的解法。24点游戏不仅是一种娱乐方式,还是一种很好的数学教育工具。


程序很多,但是都不如自己写一个:

import random
def random_solve_24():while True:nums = [random.randint(1, 14) for _ in range(4)]print(f'请用下面的数据完成24点:{nums}')solutions = generate_solutions_improved(nums)a=input('输入任意键回车后查看答案')print(f'解法为{solutions}')a=input('输入任意键回车后查看下一题(退出输入Y)')print('==============================================================================================')if a=='Y':break
def generate_solutions_improved(nums, target=24, epsilon=1e-6):def solve(nums, history):if len(nums) == 1:if abs(nums[0] - target) < epsilon:solutions.add(history[0])returnfor i in range(len(nums)):for j in range(i + 1, len(nums)):new_nums = [nums[k] for k in range(len(nums)) if k != i and k != j]new_history = [history[k] for k in range(len(nums)) if k != i and k != j]for a, b, op, in [(nums[i], nums[j], '+'), (nums[i], nums[j], '-'), (nums[j], nums[i], '-'), (nums[i], nums[j], '*'), (nums[i], nums[j], '/'), (nums[j], nums[i], '/')]:if op == '/' and abs(b) < epsilon:continue  # Avoid division by zeroresult = eval(f"a{op}b")expression = f"({history[i]}{op}{history[j]})"solve(new_nums + [result], new_history + [expression])solutions = set()solve(nums, list(map(str, nums)))return solutions
random_solve_24()

运行就可以了。


打包程序

主要依靠pyinstaller库实现,安装:

pip install pyinstaller


然后win+r,输入cmd打开终端

输入自己的代码文件所在的路径:

cd /d "E:\Xiao work\其他\脚本系列"

在对应的这个文件夹里面去直接输入cmd打开也行。


然后输入打包的文件名称,我的文件名叫 24点游戏.py

pyinstaller --onefile 24点游戏.py


等待就行,后面就可以在这个目录下的dist文件夹里面找到这个程序了。

然后双击运行就行了:(这个文件可以)

效果如下:

效果还不错。可以思考,然后看答案。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

KY113 字母统计

描述&#xff1a; 输入一行字符串&#xff0c;计算其中A-Z大写字母出现的次数 输入描述&#xff1a; 案例可能有多组&#xff0c;每个案例输入为一行字符串。 输出描述&#xff1a; 对每个案例按A-Z的顺序输出其中大写字母出现的次数。 示例1 输入&#xff1a; DFJEIWFNQLEF03…

如何使用ArcGIS Pro生成带计曲线等高线

等高线作为常见的地图要素经常会被使用到&#xff0c;一般情况下生成的等高线是不带计曲线的&#xff0c;在某些情况下我们需要带计曲线的等高线&#xff0c;这里为大家介绍一下ArcGIS Pro生成带计曲线等高线的方法&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数…

Node.js 文件夹遍历技巧:实现高效的文件管理

在 Node.js 开发中&#xff0c;经常需要对文件系统进行操作&#xff0c;包括遍历文件夹以获取文件列表。本文将讨论使用 Node.js 遍历文件夹的几种常用方法&#xff0c;并通过一个实际案例来演示如何实现。 基本概念 在开始之前&#xff0c;让我们了解一些基本的概念&#xff…

关 于 重 燃 学 习 的 热 情

3月1日是我回学校的第一天。经历了长达8个月在家的昏暗时刻&#xff0c;我这10天的感觉和在家的感觉发生了翻天覆地的变化&#xff0c;最明显的莫过于学习状态的改变。 倒不是说在家学的不好&#xff0c;而是说在学校&#xff0c;我对学习的整体感觉&#xff0c;以及专注程度&…

Spring事务传播行为总结

事务传播行为介绍 Spring中的7个事务传播行为: ​ 事务行为说明特点PROPAGATION_REQUIRED支持当前事务&#xff0c;假设当前没有事务。就新建一个事务父事务与子事务要么都成功&#xff0c;要么都失败PROPAGATION_SUPPORTS支持当前事务&#xff0c;假设当前没有事务&#xff0…

微信小程序Skyline模式自定义tab组件胶囊与原生胶囊平齐,安卓和ios均自适应

进入下面小程序可以体验效果&#xff1a; 至于原理的话&#xff0c;解释起来毕竟麻烦&#xff0c;各位可以看源码自己分析。其实很简单&#xff0c;就算计算布局。很多网上公布的布局&#xff0c;都不能正常自适应。在下这个是完美可以的 1、WXML <view class"weui…

Kubernetes operator系列:kubebuilder 实战演练 之 开发多版本CronJob

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 Kubernetes operator学习 系列文章&#xff0c;本节会在上一篇开发的Cronjob基础上&#xff0c;进行 多版本Operator 开发的实战 本文的所有代码&#xff0c;都存储于github代码库&#xff1a;https://github.c…

Peter算法小课堂—最大边最短路

这一片文章把整个图论的知识都用上了,基础芝士如下 Peter算法小课堂—Dijkstra最短路算法-CSDN博客 Peter算法小课堂—拓扑排序与最小生成树-CSDN博客 Peter算法小课堂—贪心与二分-CSDN博客 二话不说,题呢? 罗密欧与朱丽叶 你是罗密欧,要去找朱丽叶。共有n个城市,编…

【全面了解自然语言处理三大特征提取器】RNN(LSTM)、transformer(注意力机制)、CNN

目录 一 、RNN1.RNN单个cell的结构2.RNN工作原理3.RNN优缺点 二、LSTM1.LSTM单个cell的结构2. LSTM工作原理 三、transformer1 Encoder&#xff08;1&#xff09;position encoding&#xff08;2&#xff09;multi-head-attention&#xff08;3&#xff09;add&norm 残差链…

python request unittest beautifulreport 接口自动化测试框架

接着上次开发的python request pandas excel 接口自动化测试框架&#xff0c;上次遗留了两个功能需要添加&#xff1a; 1&#xff0c;测试报告的优化 2&#xff0c;参数化和关联的设置&#xff08;如何在excel表里面设置参数化和关联&#xff09; 这次先解决测试报告的优化 …

【学习总结】Python transformers AutoTokenizer encode 出现的 101 和 102

1. 代码展示&#xff1a; from transformers import AutoTokenizer, AutoModelmodel_name "bert-base-chinese"tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModel.from_pretrained(model_name)print(len(tokenizer.vocab.keys()))sequence …

linux: network: sysctl: netdev_budget_usecs的出现

这个参数就是为了在CPU于延迟直接做trade-off的一个参数,在Redhat的性能文档里有提,如果相应的计数有增加,就需要调整这个参数。 下面这个修改是,将原来的固定值改成了可修改的一个值。 commit 7acf8a1e8a28b3d7407a8d8061a7d0766cfac2f4 Author: Matthew Whitehead <…

安卓面试网络知识基础 1-5

1. 简述常见HTTP状态码分类?HTTP状态码概念 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。 HTTP状态码的英文为HTTP Status …

九种背包问题(C++)

0-1背包&#xff0c;背包大小target&#xff0c;占用容积vec[i][0]&#xff0c;可以带来的利益是vec[i][1] 一件物品只能取一次,先遍历物品然后遍历背包更新不同容积下最大的利益 int func(vector<vector<int>>&vec,int target){vector<int>dp(target1,…

WXG 凉经(40m)

宝子们&#xff0c;卷起来&#xff1b; wxg 的部分面试题 两道算法&#xff0c; 合并两个有序数组&#xff0c;链表倒转 没问项目。 网络&#xff1a; 1. HTTPS了解吗&#xff0c;讲讲TSL 流程&#xff0c; 2. CA 签发流程 3. 浏览器缓存内CA 证书哪里来的 4. 最后通信…

【C语言】指针基础知识(一)

计算机上CPU&#xff08;中央处理器&#xff09;在处理数据的时候&#xff0c;需要的数据是在内存中读取的&#xff0c;处理后的数据也会放回内存中。 一,内存和地址 内存被分为一个个单元&#xff0c;一个内存单元的大小是一个字节。 内存单元的编号&#xff08;可以理解为门…

Spring Data访问Elasticsearch----Elasticsearch存储库Repositories

Spring Data访问Elasticsearch----Elasticsearch存储库Repositories 一、自动创建具有相应映射的索引二、存储库方法的注解2.1 Highlight2.2 SourceFilters 三、基于注解的配置四、Spring命名空间Namespace 一、自动创建具有相应映射的索引 二、存储库方法的注解 2.1 Highlig…

2024年值得创作者关注的十大AI动画创新平台

别提找大型工作室制作动画了。如今,AI平台让我们就可以轻松制作动画。从简单的文本生动画功能到复杂的角色动作,这些平台为各种类型的创作者提供了不同的功能。 AI已经有了长足的发展,现在它可以理解复杂的人类动作和艺术意图,将简单的输入转化成丰富而详细的动画。 下面…

国产数据库研究-2024

作为提升自我能力的一部分&#xff0c;计划在2024年4-9月份&#xff0c;逐步梳理完善当前流行的国产数据库清单及各数据库能力&#xff0c;提高自己对各类数据库的掌握程度&#xff0c;做一名合格的DBA。 本文将通过一下方式进行各类数据库资料梳理及对比。 主要待了解的数据…

【前端Vue】Vue3+Pinia小兔鲜电商项目第1篇:认识Vue3,1. Vue3组合式API体验【附代码文档】

全套笔记资料代码移步&#xff1a; 前往gitee仓库查看 感兴趣的小伙伴可以自取哦&#xff0c;欢迎大家点赞转发~ 全套教程部分目录&#xff1a; 部分文件图片&#xff1a; 认识Vue3 1. Vue3组合式API体验 通过 Counter 案例 体验Vue3新引入的组合式API vue <script> ex…