24点是一种非常简单的游戏,可以锻炼我们的计算能力。

今天博主给大家带来的就是一个关于24点计算的程序,并不是很难,希望能给python学习者提供一些帮助。

首先我编写了一个输入数字后自动返回有解或无解的函数,且有解时返回所有解的集合。这个函数一之前的计算函数很像,只是使用了集合的设置(set()函数)和添加(add()函数)。

'''把给到的4个数进行暴力计算法算24.'''
def caculate_24(lists):results = set()#用set()函数创建一个集合result = 0symbols = ['+','-','*','/'] #4个数中间会有3个符号a,b,c,d = lists #将4个数赋值给a,b,c,d。# 三个符号分别为s1,s2和s3。for s1 in range(0,4):for s2 in range(0,4):for s3 in range(0,4):#这里是5种括号。for k1 in range(1,6):if k1 == 1:math = f'({a}{symbols[s1]}({b}{symbols[s2]}{c})){symbols[s3]}{d}'#1elif k1 == 2:math = f'(({a}{symbols[s1]}{b}){symbols[s2]}{c}){symbols[s3]}{d}'#2elif k1 == 3:math = f'({a}{symbols[s1]}{b}){symbols[s2]}({c}{symbols[s3]}{d})'#3elif k1 == 4:math = f'{a}{symbols[s1]}({b}{symbols[s2]}({c}{symbols[s3]}{d}))'#4elif k1 == 5:math = f'{a}{symbols[s1]}(({b}{symbols[s2]}{c}){symbols[s3]}{d})'#5try:if 23.999999995 < float(eval(math)) < 24.000000005:#近似值result += 1 #有解个数是resultresults.add(math)#将解法加入集合except ZeroDivisionError: #除以0passif result != 0: #非无解return resultselse: #无解return False

为方便后续的计算,还需编写一个将4个数字排列成24种的函数(例如[1,2,3,4]要排列成[1,2,3,4],[1,2,4,3],[1,3,2,4]等)。

'''这个函数将24点的每一种(例如[1,2,3,4])进行24种排列'''
def kinds_24(kind):result= []all_result = []for a in range(0,4):for b in range(0,4):for c in range(0,4):for d in range(0,4):if a != b and a != c and a != d and b != c \and b != d and c != d: #4个数字不能有相同的a1 = kind[a]b1 = kind[b]c1 = kind[c]d1 = kind[d]result = [a1,b1,c1,d1]all_result.append(result)return all_result

接着是用于给用户输入数字的对话框函数:

pyautogui 函数用于对话框(prompt输入文本,alert提示)

def get_number(number):'''这个函数用来收取用户要计算的数字'''active = True#检测用户输入的数字是否符合条件while active != False:c_number = pyautogui.prompt(f'请输入第{number}个数字:(1-13)')#对话框if c_number == None:#用户点击“Cancel”或关闭窗口sys.exit()#退出程序try:#检验输入数字是否符合要求c_number = int(c_number)if c_number < 1 or c_number > 13:raise ValueError()active = Falseexcept:pyautogui.alert('输入错误!请重新输入','错误提示')#错误消息return c_number

最后是主程序:(首先导入函数,对话框函数我是在主程序中编写的,而其他是在子程序里,所以要导入)

pyperclip函数用于复制结果。

#导入函数
from Kinds_24 import kinds_24
from Game_24 import caculate_24
import pyautogui
import sys
import pyperclipdef get_number(number):'''这个函数用来收取用户要计算的数字'''active = True#检测用户输入的数字是否符合条件while active != False:c_number = pyautogui.prompt(f'请输入第{number}个数字:(1-13)')#对话框if c_number == None:#用户点击“Cancel”或关闭窗口sys.exit()#退出程序try:#检验输入数字是否符合要求c_number = int(c_number)if c_number < 1 or c_number > 13:raise ValueError()active = Falseexcept:pyautogui.alert('输入错误!请重新输入','错误提示')#错误消息return c_numberwhile True:#主程序循环results = set()#集合times = 1n24 = []while times != 5:#获得四个数字n1 = get_number(times)n24.append(n1)#加入列表times += 1for i in kinds_24(n24):#24种排列if caculate_24(i) != False:#有解for a in caculate_24(i):results.add(a)#加入集合,避免重复if results != {}:#非无解string = ''for b in results:#显示每个解string = string + b + '\n'if pyautogui.alert(string,'计算结果','一键复制') == "一键复制":#是否要复制答案pyperclip.copy(string)#复制else:pyautogui.alert('无解','计算结果')#无解

运行结果展示:

输入数字:

如果输入错误:

最后点击复制键即可:

今天的文章到这里就结束了,想要了解更多关于24点的计算可以查看我的这条博客(Python 小程序:计算24点_拖泥鹿的博客-CSDN博客_python怎么算24点)

希望我的文章能对大家有帮助,看完记得点赞哦~~

Python 程序:24点计算器相关推荐

  1. python计算器教程,用Python程序制作一个简单的计算器

    用Python程序制作一个简单的计算器 在此示例中,您将学习创建一个简单的计算器,该计算器可以根据用户的输入进行加,减,乘或除. 要理解此示例,您应该了解以下Python编程主题: 通过函数创建简单计 ...

  2. python习作——简易24点计算器

    最近了解了下python的itertools模块,感觉挺强大的.写了个简单的24点计算器做练习.思路很简单,对于一个24点的计算过程,一定可以通过调整顺序和加括号表现为4个操作数3个操作符这样的形式. ...

  3. python编程基础与应用-Python程序设计基础与应用

    图书简介 配套资源:部分全彩印刷.电子课件.教学大纲.习题答案.源代码 本书特色: ★知名Python教育者董付国老师新作. ★言简意赅,案例丰富,配套资源超全部分内容全彩呈现. ★本书全部代码适用于 ...

  4. python程序设计基础与应用 机械工业出版社_Python程序设计基础与应用

    图书简介 配套资源:部分全彩印刷.电子课件.教学大纲.习题答案.源代码 本书特色: ★知名Python教育者董付国老师新作. ★言简意赅,案例丰富,配套资源超全部分内容全彩呈现. ★本书全部代码适用于 ...

  5. 80行代码使用Python+tkinter实现一个计算器

    闲话不说,直奔主题.建议大家跟着敲一遍代码,体会一下代码复用.字符串方法的运用和动态创建组件的妙处,然后在这个框架的基础上进行补充和发挥. 选择任何一款Python开发环境,创建一个程序文件,命名为t ...

  6. python程序设计基础董付国 pdf-Python程序设计基础与应用

    图书简介 配套资源:部分全彩印刷.电子课件.教学大纲.习题答案.源代码 本书特色: ★知名Python教育者董付国老师新作. ★言简意赅,案例丰富,配套资源超全部分内容全彩呈现. ★本书全部代码适用于 ...

  7. python编写24点游戏

    1.题目要求 24点游戏是经典的纸牌益智游戏. 常见游戏规则: 从扑克中每次取出4张牌.使用加减乘除,第一个能得出24者为赢.(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决2 ...

  8. python的执行过程_在交互式环境中执行Python程序过程详解

    前言 相信接触过Python的伙伴们都知道运行Python脚本程序的方式有多种,目前主要的方式有:交互式环境运行.命令行窗口运行.开发工具上运行等,其中在不同的操作平台上还互不相同.今天,小编讲些Py ...

  9. 独家 | 6种让Python程序变慢的坏习惯

    作者: Christopher Tao 翻译:王可汗 校对:王雨桐本文约1800字,建议阅读5分钟 本文总结了Python代码中经常被忽略的影响代码的运行速度常见问题. 随着Python的流行,用户数 ...

  10. 我的第一个Python程序

    #我的第一个Python程序 def is_valid_date(strdate):#判断是否是一个有效的日期字符串try:#判断是否是时间格式if ":" in strdate ...

最新文章

  1. 微信视频号聊天室技术介绍
  2. when is view bound to its corresponding controller instance
  3. 百度鹰眼html打开,BMap:WEB 服务API
  4. kafka相关知识点总结
  5. MongoDB数据访问[C#]
  6. 跨进程的 键盘钩子_Delphi下深入Windows编程之钩子原理一
  7. 分享用Adobe Air向iOS移植游戏的经验
  8. C语言实现两个数值互换
  9. UcOS-II 和linux比较
  10. 如何将手机投屏到电脑_使用向日葵软件如何将手机投屏到电脑上
  11. Facebook vs Chrome 关公秦琼的未来之战,互联网营销
  12. html5手机的注册页面,H5页面结合vue实现登录注册组件
  13. 褚霸:不要为了开源而开源
  14. Real-Time Rendering——5.2.2 Punctual Lights精准光
  15. Stacked Hourglass笔记源码(一)网络结构
  16. 对豆瓣电影Top250榜单的一些探索性分析
  17. LeetCode/LintCode 题解丨一周爆刷字符串:简化路径
  18. 常用的excel操作小技巧--自己用的,仅供记录
  19. HOU211学习总结
  20. C语言程序设计(第四版,建议复习用,无死角)

热门文章

  1. 毕业设计 基于单片机的智能门禁系统
  2. 关于Image.FromFile方法处理图像出现内存不足的问题
  3. Flutter 初尝:从 Java 无缝过渡
  4. 【CoppeliaSim】Solidworks中模型导出模型到V-REP
  5. Integer缓存IntegerCache详解
  6. python 万历年表
  7. ctf(vip限免)WP
  8. 溯源系统溯源码的生成方法
  9. JavaScript基本语法:JS运算符
  10. Hadoop 未授权访问 getshell