用户:
兴奋的木叶龙mC2查看:0 回复:1 评论:0 创建时间:2021-12-29T20:36:09
【作品展示】

【作品介绍】
这是一个小工具这是一个实用的工具
可以为你完成二十四点的运算
操作简单,仅需鼠标点击和键盘输入
赶紧复制下来
开始使用吧!
【作品源代码】
from tkinter import *
def twp(a,b,c,d):
'''判断a,b,c,d是否能凑成二十四点'''
op=('+','-','*','/')
ns=str(a),str(b),str(c),str(d)
for o1 in op:
for o2 in op:
for o3 in op:
for d1,n1 in enumerate(ns):
for d2,n2 in enumerate(ns):
if d2==d1:
continue
for d3,n3 in enumerate(ns):
if d3==d2 or d3==d1:
continue
for d4,n4 in enumerate(ns):
if d4==d3 or d4==d2 or d4==d1:
continue
try:
if eval(n1+o1+n2+o2+n3+o3+n4)==24:
return (True,n1+o1+n2+o2+n3+o3+n4)
except:
pass
try:
if eval('('+n1+o1+n2+')'+o2+n3+o3+n4)==24:
return (True,'('+n1+o1+n2+')'+o2+n3+o3+n4)
except:
pass
try:
if eval('('+n1+o1+n2+')'+o2+'('+n3+o3+n4+')')==24:
return (True,'('+n1+o1+n2+')'+o2+'('+n3+o3+n4+')')
except:
pass
try:
if eval(n1+o1+n2+o2+'('+n3+o3+n4+')')==24:
return (True,n1+o1+n2+o2+'('+n3+o3+n4+')')
except:
pass
try:
if eval(n1+o1+"("+n2+o2+n3+")"+o3+n4)==24:
return (True,n1+o1+"("+n2+o2+n3+")"+o3+n4)
except:
pass
try:
if eval(n1+o1+'('+n2+o2+'('+n3+o3+n4+'))')==24:
return (True,n1+o1+'('+n2+o2+'('+n3+o3+n4+'))')
except:
pass
try:
if eval(n1+o1+'(('+n2+o2+n3+')'+o3+n4+')')==24:
return (True,n1+o1+'(('+n2+o2+n3+')'+o3+n4+')')
except:
pass
try:
if eval("(("+n1+o1+n2+')'+o2+n3+")"+o3+n4)==24:
return (True,"(("+n1+o1+n2+')'+o2+n3+")"+o3+n4)
except:
pass
try:
if eval('('+n1+o1+'('+n2+o2+n3+'))'+o3+n4)==24:
return (True,'('+n1+o1+'('+n2+o2+n3+'))'+o3+n4)
except:
pass
return (False,None)
def calc():
m=twp(num1.get(),num2.get(),num3.get(),num4.get())
if m[0]:
result.set("此题有解,解法是:"+m[1]+"。")
else:
result.set("此题无解,请重新输入。")
def clean():
num1.set('')
num2.set('')
num3.set('')
num4.set("")
result.set("请输入数字")
if __name__=="__main__":
win=Tk()
win.resizable(False,False)
win.geometry("350x80+100+120")
win.title("24点计算器")
num1=StringVar(win,"")
num2=StringVar(win,"")
num3=StringVar(win,"")
num4=StringVar(win,"")
result=StringVar(win,"请输入数字")
Entry(win,textvariable=num1).place(x=10,y=10,height=25,width=60)
Entry(win,textvariable=num2).place(x=80,y=10,height=25,width=60)
Entry(win,textvariable=num3).place(x=150,y=10,height=25,width=60)
Entry(win,textvariable=num4).place(x=220,y=10,height=25,width=60)
en=Entry(win,textvariable=result)
en.place(x=10,y=45,height=25,width=280)
en["state"]="readonly"
Button(win,text="计算",command=calc).place(x=295,y=45,height=25,width=45)
Button(win,text="清空",command=clean).place(x=285,y=10,height=25,width=55)
win.mainloop()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn