python 给定数字,使表达式 = 固定值

来源:互联网 发布:vb.net 多行注释 编辑:程序博客网 时间:2024/06/06 07:28

数字: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_listif __name__ == '__main__':    print(set_num([5,4,9,7],24))  # 输入数字,结果,求出表达式


原创粉丝点击