1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Python 程序:24点计算器 简单实用

Python 程序:24点计算器 简单实用

时间:2023-03-29 22:09:20

相关推荐

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_24from Game_24 import caculate_24import pyautoguiimport sysimport 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点)

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。