Python实现1-9数组形成的结果为100的所有运算式的示例
发布时间:2020-12-17 07:56:37 所属栏目:Python 来源:网络整理
导读:问题: 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。例如:1 + 2 + 34C5 + 67C8 + 9 = 100。 from functools import reduce operator = { 1: '+',2: '-',0: '' } base = ['1','2',
问题: 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。例如:1 + 2 + 34C5 + 67C8 + 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 – Django send_mail返回SMTPConnectError
- 一则python3的简单爬虫代码
- web.py在SAE中的Session问题解决方法(使用mysql存储)
- python – matplotlib错误 – 没有名为tkinter的模块
- python – 自定义权重初始化tensorflow tf.layers.dense
- python – OpenCV透视变换给出了意想不到的结果
- python – PDFMiner – 迭代页面并将它们转换为文本
- 使用dictwriter覆盖相同csv文件中的行
- python中__call__内置函数用法实例