问题:
编写一个在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的所有运算式的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程小技巧。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。