今天玩24点的时候,突然希望想编写一个 计算24点的小程序,为python的初学者提供一些帮助。

24点是许多人都会玩的游戏。玩法在这里简单的介绍一下:选4个数字(1-13中任意),然后用加减乘除算出24。计算时,四个数字不能重复使用也不能少用。

看似非常简单的24点游戏,为计算出24点,常常需要大量的计算,而这又具有一些规律性,符合编程的条件。因此,博主做了一个简单的24点小程序,在这里与大家分享一下,希望对大家有所帮助。

首先,24点有1820种情况,需要编写一个函数来生成1820种情况。这里使用了循环嵌套的技巧,比较简单,在此不作赘述。

'''这个函数排列出1820种24点排列(1-13)'''
def numbers_1820():kinds = []  #这个列表用来储存1820种24点排列# 24点有4个数字,每个数字有十三种(1-13),记为n1,n2,n3和n4。for n1 in range(1,14):for n2 in range(1,14):for n3 in range(1,14):for n4 in range(1,14):if n1 <= n2 <= n3 <= n4: #保证不重复,不遗漏number_list = [n1,n2,n3,n4] #每一种4个数字的列表kinds.append(number_list) #添加入最终列表return kinds

为方便后续的计算,还需编写一个将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

最后需要编写的函数是计算所给的24点。首先要在4个数字中插入3个符号(共4*4*4=64种),然后还要加上5种括号,进行计算已得到有解或无解的结果。

'''把给到的4个数进行暴力计算法算24.'''
def caculate_24(lists):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 #有解个数是resultexcept ZeroDivisionError: #除以0passif result != 0: #非无解return Trueelse: #无解return False

最后将几个函数和在一条主程序里面,以生成24点的有无解表。

由于最后的需要操作Excel,需安装第三方模块xlwt,可打开Windows文件资源管理器,输入这个路径:C:\Users\ASUS\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell,打开WindowsPowershell,运行这条命令:pip install --user xlwt ,即可安装完成。

以下是最后主程序的脚本:

# 导入函数
from Numbers_1820 import numbers_1820
from Kinds_24 import kinds_24
from Caculate_24 import caculate_24
import xlwtresult = []
list_1820 = numbers_1820() #首先获取24点的1820种排列for i in list_1820:#遍历列表youjie = 0list_24 = kinds_24(i)#将1820种的每一种进行24种排列for a in list_24: #遍历24种情况# 开始计算if caculate_24(a) == True:#有解youjie += 1if youjie > 0:#有解result.append([i,'有解'])#加入最后的总列表else:#无解result.append([i,'无解'])#同理'''将结果写入一个Excel表'''
wbk = xlwt.Workbook() #创建一个新Excel
sheet = wbk.add_sheet('24点有无解表') #增加一个sheet
h = 0
# 开始写入
for b in result:sheet.write(h,0,str(b[0]))sheet.write(h,1,b[1])h += 1
wbk.save('24点表.xlsx') #保存
print('Done.')#完成

注意:将子程序与主程序放置于同一个文件夹里。

最后的Excel表展示:

调整后:

今天的文章到此就结束了,希望我的文章对大家有帮助!

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

  1. 编写python程序、计算账户余额_小明有20w存款存在余额宝中,按余额宝年收益为3.35%计算,用Python编写程序计算,多少年后小明的存款达到30w?...

    [判断题]卤素灯泡是在灯泡内充入氟.氯等卤素气体. [单选题]我国刑法第12条关于溯及力的规定采取的是( ). [填空题]本地局域网 LAN 内, () 和无绳电话速率较低,主流带宽是 100kbps ...

  2. python降低图片分辨率_手把手:扫描图片又大又不清晰?这个Python小程序帮你搞定!...

    原标题:手把手:扫描图片又大又不清晰?这个Python小程序帮你搞定! 大数据文摘作品 编译:HAPPEN.于乐源.小鱼 一位乐于分享学生精彩笔记的大学教授对于扫描版的文件非常不满意--颜色不清晰并且 ...

  3. 几个python小程序

    python小程序 1-100求和 1 def Sum(x, y): 2 return x+y 3 print reduce(lambda x,y:x+y,range(1,101)) 4 5 i = ...

  4. 有趣python小程序系列之一

    文章目录 前言 一.飘落的银杏 二.代码部分 1.导入所需的库 2.生成斐波那契数列 3.定义生成叶子的方法 4.定义生成树的方法 5.主函数部分 三.结果展示 前言 关于学python的初衷,如图, ...

  5. 【有趣的Python小程序】Python多个简单上手的库制作WalkLattice 走格子游戏 (思路篇)上

    篇写上一个思路篇,那么今天我们就来完成这一项工作 源代码和配套文件 链接: https://caiyun.139.com/m/i?135ClY1yWrSKX 提取码:e4pq 复制内容打开中国移动云盘 ...

  6. python人工智能小程序_杭州python小程序

    杭州python小程序 来源:教育联展网    编辑:佚名    发布时间:2018-10-19 Java.PHP.Python哪个就业前景比较好 具体对比分析如下: Java语言特点:所有Andro ...

  7. python恶搞小程序-有趣的python小程序

    有趣的python小程序 1.密码生成器x=int(input()) print(''.join(__import__('random').choice('QWERTYUIOPASDFGHJKLZXC ...

  8. python日历小程序_一个查看网络设备信息Python小程序

    原标题:一个查看网络设备信息Python小程序 网络编程中,最常见的一个问题就是,获取设备信息. 首先我们,要学习如何获取本机的网络信息.我们将用到标准库中的socket库.假如说,我们要查看本机的 ...

  9. 人工智能python小程序_Python:一个可以套路别人的python小程序

    一个可以套路别人的python小程序~ 先简要介绍一下程序. 程序是使用pycharm工具,python语言所写.程序包括客户端 client.py 和服务器端 server.py 两部分,利用了py ...

  10. python如何运行一个python程序_python如何运行?第一个python小程序示范

    我们想要用python编程首先要做的就是安装一些工具,随后学会应用.那么问题来了,我们需要安装什么?python又是怎样运行的呢? 安装什么工具? 1.Python 3.6.5(我安装的,还有很多版本 ...

最新文章

  1. Matlab中bwmorph函数的使用
  2. 7. Query Expressions(查询表达式)
  3. 广告等第三方应用嵌入到web页面方案 之 使用js片段
  4. 贝叶斯神书《统计反思》推出第二版,视频课程同步上线,作者亲自在线答疑...
  5. 物联网python教程慕课_物联网小白入门
  6. 如何导入maven源文件_如何正确导入maven项目到eclipse?
  7. 余承东卸任华为云CEO 兼任智能汽车解决方案 BU CEO
  8. g18 android 4.4,cm11出了最新的android4.4完美的附网址
  9. elasticsearch知识点总结
  10. 整理最新java面试宝典2019
  11. 基于JSP小型超市管理系统
  12. 单片机程序配置成开漏输出_单片机I/O口推挽与开漏输出详解
  13. Flink中水位线Watermark
  14. 平安京服务器维护,决战平安京无法登陆怎么解决 无法登陆原因及解决方案一览...
  15. 爬取公众号的文章,同时处理图片不显示问题(JAVA)
  16. 常见的几种身份验证方法
  17. devServer和dev的区别,及vue代理接口的使用
  18. JavaScript之undefined的加(+)、减(-)、乘(*)、除(/)和取模(%)运算
  19. 2.3 逻辑代数的基本公式和常用公式
  20. python中列表的删除操作

热门文章

  1. SAP 用户菜单如何更直观整洁
  2. xxl_job部分源码解读
  3. 小技巧(1):Ububtu18.04中.z01 .z02 .z03此类拆分后压缩文件解压缩办法(以及常用解分卷压缩方法)
  4. 大数据分析工具,主要存在哪些最常见的难题?
  5. TI MSP430工程配置及2019年电赛A题编程示例(使用430 F5529)
  6. 详解POW工作量证明原理
  7. cf英文名字格式好看的_格式好看的cf英语名字【三篇】
  8. 浙大玉泉校区-武林门民航售票处-萧山机场
  9. Symantec Endpoint Protection 14.3 RU3 (macOS, Linux, Windows) - 端点安全解决方案
  10. DHCP 客户端移动位置后无法获取IP地址的解决办法和原因分析