二十四点游戏python_[求助]关于二十四点游戏python

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

24点纸牌游戏的开发

24点是一种老少咸宜的游戏,它的具体玩法如下:

给玩家4张牌,每张牌的面值在1~13之间,允许其中有数值相同的牌。采用加、减、乘、除四则运算,允许中间运算存在小数,并且可以使用括号,但每张牌只能使用一次,尝试构造一个表达式,使其运算结果为24。

1)请你根据上述游戏规则构造一个玩24点游戏的算法,编程实现。要求如下:

输入:n1, n2, n3, n4

输出:若能得到运算结果为24,则输出一个对应的运算表达式。

如:输入:11,8,3,5

输出:(11-8)*(3+5)=24

提示:

算法的设计不唯一,穷举法是最为基本的解法,分治法则会获得比较高一些的效率,请你仔细思考,设计出算法实现该问题并画出算法的流程图。

2)请为你的24点纸牌游戏开发出一个界面

例如:

提示:

1. 你可以百度搜索一下互联网上类似小软件的开发,试用一下,确定一个界面风格。

2. 软件主要完成的功能需要以下几个:

1)提供一个功能能进行随机发牌4张(用纸牌的形状或按钮的形状均可)

2)提供功能供用户输入关于这4张牌的表达式,并进行计算,判断结果的正确与否

3)能提供给用户正确答案

实验指导:

提示1:以下给出了穷举法解24点的代码框架,但很显然这种解法并不是最好的求解方法,你还可以设计其它的算法来解决该问题。

def cal(a,b,op): if op==0:return(a+b) if op==1:return(a-b) if op==2:return(a*b) if op==3: if(b==0.0): return(999.0) else:return(int(a/b)) def D24(v0,v1,v2,v3): op=['+','-','*','/'] v=[v0,v1,v2,v3] count=0 #四重循环开始穷举四个数字的位置: 4!=24 种 #三重循环开始穷举三个运算符: 4X4X4=64 种 #未用循环,直接穷举三个运算符的优先级: 3!-1=5种- t1=t2=t3=0 #第1种情况 ((a。b)。c)。d 开始计算: t1=cal(v[i1],v[i2],f1) t2=cal(t1,v[i3],f2) t3=cal(t2,v[i4],f3) if t3==24: print(v[i1],op[f1],v[i2],op[f2],v[i3],op[f3],v[i4]) count+=1 #第2种情况 (a。b)。(c。d) 开始计算: #第3种情况 (a。(b。c))。d 开始计算: #第4种情况 a。((b。c)。d ) 开始计算: #第5种情况 a。(b。(c。d)) 开始计算: #穷举结束:共 24*64*5=7680 种表达式 --------------------------- if (count==0): print("can not calculate 24.",v0,v1,v2,v3); else: print("has several ways to calculate",count) v0=int(input("Pls input the 1st number:"))v1=int(input("Pls input the 2nd number:"))v2=int(input("Pls input the 3rd number:"))v3=int(input("Pls input the 4th number:"))D24(v0,v1,v2,v3)

提示2:界面设计可参考GUI相关知识进行,用到的控件包括:Button,Entry,Label等。注意:内置函数eval( )可以完成把一个字符串作为参数并返回它用为一个Python表达式的结果,例如:

>>>eval("2+3*4-5")

输出结果为:

9

以上函数可能帮助到你获取用户在Entry中输入表达式的值

另外,随机数的生成请参考Python的random模块

大计基实验太无情了

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

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

相关文章

python-3.6.2安装

1、下载python-3.6.2-amd64.exe安装包 官网下载地址:https://www.python.org/ 2、Python安装,双击傻瓜式安装(用英文路径,不要有空格), 特别要注意勾上Add Python 3.6 to PATH(勾选后&#xff0…

Siege压力工具

Siege官方:http://www.joedog.org/ Siege下载:http://www.joedog.org/pub/siege/siege-latest.tar.gz Siege解压并安装:# tar -zxvf siege-latest.tar.gz # cd siege-latest/ #./configure #make #make installSiege使用:# siege -h 查看相关…

递归javascript_JavaScript中的递归

递归javascriptby Kevin Ennis凯文恩尼斯(Kevin Ennis) JavaScript中的递归 (Recursion in JavaScript) I’m just gonna get this out of the way right up front, because people get really angry otherwise:我只是直接解决这个问题,因为否则人们会非常生气&…

python google drive api_Python管理Google Drive文件

背景Google Drive给我们提供了很多管理和共享文件的简便方法,而且还是免费的(当然免费账户有一定存储限制)。但是,对于某些edu用户,Google Drive存储不仅是免费的,而且是无配额限制的。您是否想知道如何从数据科学的角度充分利用这…

Struts2学习---基本配置,action,动态方法调用,action接收参数

首先我们先来直接配置,然后再来讲原理: 第一步:jar包的引入: 我们可以到struts2的官网上下载: http://struts.apache.org/download.cgi#struts2513 然后解压将里面的app文件夹下的示例war文件解压,将里面的…

实现对数组找最大最小数

实现对数组找最大最小数 在用js的过程中我们往往会需要找到一个数组里最大或最小的数, 但是我们不能直接用Math.max(Arr)或Math.min(Arr),因为max()里面不能填数组,只能填连续的数。 那我们该怎么办呢? 一定…

开源免费 低代码平台开源_行动透明:免费代码营现已开源

开源免费 低代码平台开源by freeCodeCamp通过freeCodeCamp 行动透明:免费代码营现已开源 (Transparency in Action: Free Code Camp is Now Open Source) We’re thrilled to announce that Free Code Camp is now fully open-source. Now you can fork our code b…

vc mysql init 崩溃_故障分析 | 崩溃恢复巨慢原因分析

作者:xuty本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。一、现象有个 MySQL 5.7 开发库异常挂掉后,奔溃恢复一直处于如下位置,且持续了 2 小时左右才起来…

surfaceview结束后怎么处理_污泥压滤机处理后的污泥怎么处置

在污泥处理处置中,污泥压滤机处理污泥只是对污泥进行脱水,并没有实现污泥资源化处置。再进行污泥“减量化、无害化、资源化”处理时,许多企业用污泥压滤机对污泥脱水处理后就不知道怎么继续处置了,从而使污泥饼无处可去&#xff0…

js数组详解

1,什么是数组数组是值得有序集合,每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引。js的数组是无类型的,数组元素可以是任意类型,同一个数组中的不同元素可能是对象或数组…

[转载]linux内存映射mmap原理分析

转自:http://blog.csdn.net/yusiguyuan/article/details/23388771 内存映射,简而言之就是将用户空间的一段内存区域映射到内核空间,映射成功后,用户对这段内存区域的修改可以直接反映到内核空间,同样,内核空…

判断一个指针有没有free_Free Code Camp的每个人现在都有一个档案袋

判断一个指针有没有freeby freeCodeCamp通过freeCodeCamp Free Code Camp的每个人现在都有一个档案袋 (Everyone at Free Code Camp now has a Portfolio) Note: we originally published this on our now-defunct blog in January of 2015.注意:我们最初是在2015年…

冒泡、快速排序小结

1.冒泡排序 (1) 比较领近的两个数 (2) 如果左边的比右边的数字大,则交换位置 (3) 向右移动一位,继续比较相邻的两个数 排序示例: 一轮排序结束后,最大值的位置已经移动最右端,再次如此循环,最终经过n-1次则…

python中until函数_等待应用程序窗口:python中的pywinauto.timings.WaitUntilPasses

我试图在pywinauto中使用waituntilpasses来给应用程序时间打开一个新窗口.我已使用SWAPY识别窗口详细信息.为了进行测试,我手动打开了子窗口,因此WaitUntilPasses应该立即看到该窗口,但是没有看到.语法显示为OK,因为我可以找到并打印find_windows的输出,如下所示:xx…

synchronized 异常_由浅入深,Java 并发编程中的 Synchronized

synchronized 作用synchronized 关键字是 Java 并发编程中线程同步的常用手段之一。1.1 作用:确保线程互斥的访问同步代,锁自动释放,多个线程操作同个代码块或函数必须排队获得锁,保证共享变量的修改能够及时可见,获得…

mysql正则通配符全解_mysql正则表达式与通配符

扩展正则表达式的一些字符是: “.”匹配任何单个的字符。 一个字符类“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。为了命名字符的一个范围,使用一个“-”。“[a-z]”匹配任何小写字母,而“[0-9…

dos常用文件操作命令

1、DIR 含义: 显示指定目录下的文件和子目录列表 类型: 内部命令 格式: DIR[drive:][path][filename][/p][/w][/A[[:]attributes]][/O[[:]sortorder]][/S][/B][/L] 举例: DIR DIR D:\px2 DIR D:\px2\*.txt DIR /A:D /O:D 2、COPY…

使您的Java代码闻起来很新鲜

by Marco Massenzio由Marco Massenzio 使您的Java代码闻起来很新鲜 (Make your Java code smell nice and fresh) A few years ago I joined a startup working on a cloud enterprise service that was originally built by an offshore team.几年前,我加入了一家…

MySQL时间戳与日期格式的相互转换

MySQL时间戳与日期格式的相互转换,PHP时间戳与日期格式的相互转换 MySQL: 获取当前时间SELECT NOW(); // 2018/10/11 14:22:51 时间日期格式转换成时间戳格式,UNIX_TIMESTAMP()SELECT UNIX_TIMESTAMP(NOW()); // 1539238930 时间戳格式转换成时间日期格式…

Linux内存分配机制之伙伴系统和SLAB

转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6539590.html 内核内存管理的一项重要工作就是如何在频繁申请释放内存的情况下,避免碎片的产生。这就要求内核采取灵活而恰当的内存分配策略。通常,内存分配一般有两种情况&#xff1a…