Python 程序:24点计算器
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点计算器相关推荐
- python计算器教程,用Python程序制作一个简单的计算器
用Python程序制作一个简单的计算器 在此示例中,您将学习创建一个简单的计算器,该计算器可以根据用户的输入进行加,减,乘或除. 要理解此示例,您应该了解以下Python编程主题: 通过函数创建简单计 ...
- python习作——简易24点计算器
最近了解了下python的itertools模块,感觉挺强大的.写了个简单的24点计算器做练习.思路很简单,对于一个24点的计算过程,一定可以通过调整顺序和加括号表现为4个操作数3个操作符这样的形式. ...
- python编程基础与应用-Python程序设计基础与应用
图书简介 配套资源:部分全彩印刷.电子课件.教学大纲.习题答案.源代码 本书特色: ★知名Python教育者董付国老师新作. ★言简意赅,案例丰富,配套资源超全部分内容全彩呈现. ★本书全部代码适用于 ...
- python程序设计基础与应用 机械工业出版社_Python程序设计基础与应用
图书简介 配套资源:部分全彩印刷.电子课件.教学大纲.习题答案.源代码 本书特色: ★知名Python教育者董付国老师新作. ★言简意赅,案例丰富,配套资源超全部分内容全彩呈现. ★本书全部代码适用于 ...
- 80行代码使用Python+tkinter实现一个计算器
闲话不说,直奔主题.建议大家跟着敲一遍代码,体会一下代码复用.字符串方法的运用和动态创建组件的妙处,然后在这个框架的基础上进行补充和发挥. 选择任何一款Python开发环境,创建一个程序文件,命名为t ...
- python程序设计基础董付国 pdf-Python程序设计基础与应用
图书简介 配套资源:部分全彩印刷.电子课件.教学大纲.习题答案.源代码 本书特色: ★知名Python教育者董付国老师新作. ★言简意赅,案例丰富,配套资源超全部分内容全彩呈现. ★本书全部代码适用于 ...
- python编写24点游戏
1.题目要求 24点游戏是经典的纸牌益智游戏. 常见游戏规则: 从扑克中每次取出4张牌.使用加减乘除,第一个能得出24者为赢.(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决2 ...
- python的执行过程_在交互式环境中执行Python程序过程详解
前言 相信接触过Python的伙伴们都知道运行Python脚本程序的方式有多种,目前主要的方式有:交互式环境运行.命令行窗口运行.开发工具上运行等,其中在不同的操作平台上还互不相同.今天,小编讲些Py ...
- 独家 | 6种让Python程序变慢的坏习惯
作者: Christopher Tao 翻译:王可汗 校对:王雨桐本文约1800字,建议阅读5分钟 本文总结了Python代码中经常被忽略的影响代码的运行速度常见问题. 随着Python的流行,用户数 ...
- 我的第一个Python程序
#我的第一个Python程序 def is_valid_date(strdate):#判断是否是一个有效的日期字符串try:#判断是否是时间格式if ":" in strdate ...
最新文章
- 微信视频号聊天室技术介绍
- when is view bound to its corresponding controller instance
- 百度鹰眼html打开,BMap:WEB 服务API
- kafka相关知识点总结
- MongoDB数据访问[C#]
- 跨进程的 键盘钩子_Delphi下深入Windows编程之钩子原理一
- 分享用Adobe Air向iOS移植游戏的经验
- C语言实现两个数值互换
- UcOS-II 和linux比较
- 如何将手机投屏到电脑_使用向日葵软件如何将手机投屏到电脑上
- Facebook vs Chrome 关公秦琼的未来之战,互联网营销
- html5手机的注册页面,H5页面结合vue实现登录注册组件
- 褚霸:不要为了开源而开源
- Real-Time Rendering——5.2.2 Punctual Lights精准光
- Stacked Hourglass笔记源码(一)网络结构
- 对豆瓣电影Top250榜单的一些探索性分析
- LeetCode/LintCode 题解丨一周爆刷字符串:简化路径
- 常用的excel操作小技巧--自己用的,仅供记录
- HOU211学习总结
- C语言程序设计(第四版,建议复习用,无死角)