24点纸牌游戏的开发 python

24点纸牌游戏的开发 python
24点纸牌游戏的开发
1)请你根据上述游戏规则构造一个玩24点游戏的算法,编程实现.要求如下:
输入:n1,n2,n3,n4
输出:若能得到运算结果为24,则输出一个对应的运算表达式.
如:输入:11,8,3,5
输出:(11-8)*(3+5)=24
提示:
算法的设计不唯一,穷举法是最为基本的解法,分治法则会获得比较高一些的效率,请你仔细思考,设计出算法实现该问题并画出算法的流程图.
2)请为你的24点纸牌游戏开发出一个界面
例如
提示:
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 #四重循环开始穷举四个数字的位置:=24 种 #三重循环开始穷举三个运算符:4X4X4=64 种 #未用循环,直接穷举三个运算符的优先级:-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模块
大计基实验太无情了
lin83920 1年前 已收到1个回答 举报

我的用户名有点长 幼苗

共回答了27个问题采纳率:88.9% 举报

很久之前自己写的了,用的就是高级一点的穷举,还挺快的.
附带一个gui
求给分啊
两个文件,cui负责算数gui是界面,亲测可运行的
")
Button(text = "计算", command = calculate).pack()
initvariable()
drawframe()

1年前 追问

2

lin83920 举报

可能是版本原因...这该怎么办......

举报 我的用户名有点长

啊啊,我这个是2.7版的。。。
http://stackoverflow.com/questions/6800481/python-map-object-is-not-subscriptable
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 1.533 s. - webmaster@yulucn.com