数字:5,4,9,7
目标值:24
答案:4*9-5-7
注意:写的比较简陋:结果有很多重复的,可能还有一些算不出来。
如果有算不出来, 还希望提出来,谢谢!
def set_num(x,y):
'''
给定数字,使表达式等于 固定值
例:set_num([1,2,3],9)
结果:((1+2)*3) ... ... ...
:param x: list, 元素是字符串数字 例:[1,2]
:param y: int, 结果值, 例:3
:return: 返回列表
'''
import itertools
num_list = []
per_list = list(itertools.permutations(x, len(x)))
symbol_list = [''.join(x) for x in itertools.product('+-*/', repeat=len(x)-1)]
for i in per_list:
for j in symbol_list:
num = str(i[0])
results = '('+str(i[0])
for n in range(len(j)):
results += j[n] + str(i[n + 1])+')'
num = str(eval(num + j[n] + str(i[n + 1])))
if eval(num) == y:
num_list.append(results)
return num_list
if __name__ == '__main__':
print(set_num([5,4,9,7],24)) # 输入数字,结果,求出表达式