Python之计算24点
完整的代码如下:
# -*- coding: utf-8 -*-
import itertools#with brackets
def with_brackets(lst, ops_lst):for op in ops_lst: #无括号时的运算情形expr1 = '('+lst[0]+op[0]+lst[1]+')'+op[1]+lst[2]+op[2]+lst[3]expr2 = '('+lst[0]+op[0]+lst[1]+op[1]+lst[2]+')'+op[2]+lst[3]expr3 = lst[0]+op[0]+'('+lst[1]+op[1]+lst[2]+')'+op[2]+lst[3]expr4 = '('+lst[0]+op[0]+lst[1]+')'+op[1]+'('+lst[2]+op[2]+lst[3]+')'for expr in [expr1, expr2, expr3, expr4]:try:t=eval(expr)except: #作除法时,跳过分母为0时的情形passif abs(t-24) < 0.001:#float型数值计算存在微小的误差return exprreturn 0#返回4个数计算24的方法
def hasMethod(numbers, ops_lst):for lst in itertools.permutations(numbers):lst = list(map(lambda x:str(x), lst))#without bracketsfor op in ops_lst:expr = lst[0]+op[0]+lst[1]+op[1]+lst[2]+op[2]+lst[3]if abs(eval(expr)-24) < 0.001:return expr#with bracketsexpr = with_brackets(lst, ops_lst)if expr != 0:return exprreturn 0#返回4个数计算24的方法,无方法时返回"No Method"
def cal_24(numbers):ops = ['+','-','*','/']ops_lst = [[i,j,k] for i in ops for j in ops for k in ops]expr = hasMethod(numbers, ops_lst)if expr != 0:return exprelse:return 'No method!'#所有情况的计算24点的办法,并输出到文本文件
def main():outfile=open("H:\\24dian.txt","w")numbers_lst = [[i,j,k,l] for i in range(1,14) for j in range(1,14)\for k in range(1,14) for l in range(1,14)]for numbers in numbers_lst:a = list(map(lambda x: str(x), numbers))methodInfo = "[%s,%s,%s,%s]: %s\n"%(a[0],a[1],a[2],a[3],cal_24(numbers))outfile.write(methodInfo)outfile.close() main()
输出的文件如下:
所有的情况可查看文件:https://gitee.com/Jclian91/24DianJiJiSuan
本次分享到此结束,欢迎大家交流与批评~~
Python之计算24点相关推荐
- Python快速计算24点游戏并获取表达式
24 点游戏规则 有4个范围在 [1,9] 的数字,通过「加.减.乘.除」四则运算能够获得24,认为有解. 4个范围在 [1,9] 的数字能够产生495种可能,其中404中组合情况都是有解的,有解概率 ...
- python_用python计算24点游戏
24点的游戏大家都玩过,这次我们用python来算出四张牌的计算24的方法 def calculates(number, n, result):if n == 1:if number[0] == re ...
- 无网络服务器(linux ubuntu),pip安装python科学计算所有需要包(packages)
无网络服务器(linux ubuntu),pip安装python科学计算所有需要包(packages) # 在windows上打开anaconda,进入环境tab页,在base环境处单击,然后点开te ...
- python科学计算基础教程pdf下载-python科学计算 第二版 PDF 下载
相关截图: 资料简介: 本书详细介绍Python科学计算中最常用的扩展库NumPy.SciPy.matplotlib.Pandas.SymPy.TTK.Mayavi.OpenCV.Cython,涉及数 ...
- python 科学计算设计_《Python科学计算-(第2版)》怎么样_目录_pdf在线阅读 - 课课家教育...
第1章 Python科学计算环境的安装与简介 1 1.1 Python简介 1 1.1.1 Python 2还是Python 3 1 1.1.2 开发环境 2 1.1.3 集成开发环境(IDE) 5 ...
- Python科学计算库核心知识点总结_代码篇(ML/DL依赖语法)
Python科学计算库核心知识点总结_代码篇(ML/DL依赖语法) ...
- Python VTK计算曲面的高斯曲率和平均曲率
introduction: Python VTK计算曲面的高斯曲率和平均曲率,如何使用户Python版本的VTK计算曲面的高斯曲率并映射在曲面上.使用了两个不同的表面,每个表面根据其高斯曲率和平均曲率 ...
- python科学计算—— numpy
python科学计算-- numpy 1.模块导入 2. 数组的基本属性和操作 2.1 创建一维和二维数组 2.2 常用属性 2.3 调整数组的形状 2.4 将数组转化为list 2.5 numpy的 ...
- 初识 Python 科学计算库之 NumPy(创建多维数组对象)
文章目录 参考 描述 NumPy 特点 获取 导入 多维数组对象 np.array() np.asarray() 范围 随机 概览 np.random.randn() np.random.normal ...
最新文章
- 快手EB级HDFS挑战与实践
- NSStirng、NSArray、以及枚举(Method小集合)
- VMware 没网线 虚拟机和主机互联
- vector嵌套vector嵌套pair
- ExtJS MVC 学习手记3
- SAP Spartacus使用了ngrx library
- windows update更新失败 安全模式进不去
- httpclient 多附件上传
- redis报错解决,MISCONF Redis is configured to save RDB snapshots
- 灌醉茅台董事长拿到便宜酒?潘长江和茅台双双回应...
- Java多线程编程(3)--线程安全性
- phpmyadmin创建账号授权指定表
- Ubuntu 14.04 设置静态IP地址全攻略
- 对于IT这两个字眼,是不是只能由学习过IT的大学生才能做呢,就由我来为大家讲解一下IT的由来!
- Python格式控制之九九乘法表打印
- js对象嵌套数组_使用角管过滤嵌套数组和对象的数组并突出显示结果
- 掌握这个小技巧,让你的 C++ 编译速度提升 50 倍!
- 计算机文件夹操作教案,文件文件和文件夹教案
- 【Java容器】Java容器框架解析
- 【Python爬虫实战】用urllib与服务端交互(发送和接收数据)
热门文章
- 开启所有activex等Internet选项的批处理bat
- python自动控制生产线输送线_(完整版)(完整版)自动流水线输送系统设计说明书...
- 港大全面封杀ChatGPT,AI作弊丑闻震惊全世界!
- win10 intel 9260AC comfast-wp2100 网卡奇怪问题解决
- 惊恐!朋友圈照片被打包倒卖,一套只要五块钱?
- Photoshop之基础篇
- 如何将jpg图片转换为psd格式?教你3招巨简单
- 我谈学习型红外遥控(一)
- 【钢格板】钢格板压焊机的实际操作和使用方法
- MBR分区结构、DPT分区表、EBR扩展引导