Python实现1-9数组形成的结果为100的所有运算式的示例


Posted in Python onNovember 03, 2017

问题:

编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。例如:1 + 2 + 34?5 + 67?8 + 9 = 100。

from functools import reduce
 
operator = { 
 1: '+', 
 2: '-', 
 0: '' 
} 
 
base = ['1', '2', '3', '4', '5', '6', '7', '8', '9'] 
 
def isHundred(num): 
 
 #转化为8位3进制数,得到运算符数组 
 arr = [] 
 for index in range(8): 
  index = 7 - index 
  arr.append(num // (3 ** index)) 
  num -= (num // (3 ** index)) * (3 ** index) 
 arr = map(lambda x: operator[x], arr) 
 
 #合并得到运算式 
 formula = reduce(lambda x, y: x + y, zip(base, arr)) 
 
 formula = list(formula) 
 formula.append('9') 
 
 formula = ''.join(formula) 
 #计算运算式结果 
 res = eval(formula) 
 return res, formula 
 
 
if __name__ == '__main__': 
 #所有可能的结果 
 total = 3 ** 8
 for i in range(total): 
  res, formula = isHundred(i) 
  if res == 100: 
   print(formula+' = 100')

 结果:

/usr/bin/python3.5 /home/kang/workspace/Qt3d/test.py 
123+45-67+8-9 = 100
123+4-5+67-89 = 100
123-45-67+89 = 100
123-4-5-6-7+8-9 = 100
12+3+4+5-6-7+89 = 100
12+3-4+5+67+8+9 = 100
12-3-4+5-6+7+89 = 100
1+23-4+56+7+8+9 = 100
1+23-4+5+6+78-9 = 100
1+2+34-5+67-8+9 = 100
1+2+3-4+5+6+78+9 = 100

以上这篇Python实现1-9数组形成的结果为100的所有运算式的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python socket.error: [Errno 98] Address already in use的原因和解决方法
Aug 25 Python
python错误处理详解
Sep 28 Python
详解Python中的相对导入和绝对导入
Jan 06 Python
Python代码缩进和测试模块示例详解
May 07 Python
python调用Matplotlib绘制分布点并且添加标签
May 31 Python
Python数据抓取爬虫代理防封IP方法
Dec 23 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
Dec 26 Python
详解Python 4.0 预计推出的新功能
Jul 26 Python
django模型动态修改参数,增加 filter 字段的方式
Mar 16 Python
python 解决mysql where in 对列表(list,,array)问题
Jun 06 Python
pandas抽取行列数据的几种方法
Dec 13 Python
python数据处理之Pandas类型转换
Apr 28 Python
python使用PyCharm进行远程开发和调试
Nov 02 #Python
python中文分词教程之前向最大正向匹配算法详解
Nov 02 #Python
详解Python里使用正则表达式的ASCII模式
Nov 02 #Python
python安装numpy&安装matplotlib& scipy的教程
Nov 02 #Python
python中实现精确的浮点数运算详解
Nov 02 #Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
Nov 02 #Python
python3.0 模拟用户登录,三次错误锁定的实例
Nov 02 #Python
You might like
PHILIPS L4X25T电路分析和打理
2021/03/02 无线电
PHP 读取Postgresql中的数组
2013/04/14 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
2016/07/08 PHP
php+jQuery递归调用POST循环请求示例
2016/10/14 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
2019/03/06 PHP
jQuery live( type, fn ) 委派事件实现
2009/10/11 Javascript
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
2011/04/01 Javascript
JQuery中html()方法使用不当带来的陷阱
2011/04/07 Javascript
javascript管中窥豹 形参与实参浅析
2011/12/17 Javascript
js中的preventDefault与stopPropagation详解
2014/01/29 Javascript
JavaScript获取数组最小值和最大值的方法
2015/06/09 Javascript
第一次接触神奇的Bootstrap菜单和导航
2016/08/01 Javascript
vue.js通过自定义指令实现数据拉取更新的实现方法
2016/10/18 Javascript
JS中微信小程序自定义底部弹出框
2016/12/22 Javascript
关于bootstrap日期转化,bootstrap-editable的简单使用,bootstrap-fileinput的使用详解
2017/05/12 Javascript
js 两个日期比较相差多少天的实例
2017/10/19 Javascript
vue的过滤器filter实例详解
2018/09/17 Javascript
JS实现电脑虚拟键盘打字测试
2020/06/24 Javascript
在Linux中通过Python脚本访问mdb数据库的方法
2015/05/06 Python
Python实现字符串与数组相互转换功能示例
2017/09/22 Python
Python 从相对路径下import的方法
2018/12/04 Python
python实现手势识别的示例(入门)
2020/04/15 Python
Python实现Word表格转成Excel表格的示例代码
2020/04/16 Python
html5 canvas绘制放射性渐变色效果
2018/01/04 HTML / CSS
详解HTML5 Canvas绘制时指定颜色与透明度的方法
2016/03/25 HTML / CSS
HTML5中原生的右键菜单创建方法
2016/06/28 HTML / CSS
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
2014/03/30 面试题
委托证明的格式
2014/01/10 职场文书
材料加工工程求职信
2014/02/19 职场文书
写给汽车4S店的创业计划书,拿来即用!
2019/08/09 职场文书
Nginx+SpringBoot实现负载均衡的示例
2021/03/31 Servers
java实现对Hadoop的操作
2021/07/01 Java/Android
索尼ICF-36收音机评测
2022/04/30 无线电
利用Java连接Hadoop进行编程
2022/06/28 Java/Android