猫史档案馆


【Python作品分享】24点计算器【作品秀】

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


【作品展示】

center_image

 

【作品介绍】

这是一个小工具

这是一个实用的工具

可以为你完成二十四点的运算

操作简单,仅需鼠标点击和键盘输入

赶紧复制下来

开始使用吧!

 

【作品源代码】

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


回复

上一页1 页 / 共 1下一页
兴奋的木叶龙mC2兴奋的木叶龙mC2

有了这个程序,再也不用怕妈妈给我出24点题了~

嘻嘻~

点赞0


评论