根据题目,不能用括号,从左到右计算(就不会出现整除0的情况)
用itertools的permutations和product方法生成序列,
用eval计算
以上,提供个思路吧。
import itertools nums = [None, 'A']+list('23456789')+['10', 'J', 'Q', 'K'] while True: try: s = input() if 'joker' in s.lower(): print('ERROR') else: a = [str(nums.index(i)) for i in s.split()] isfind = False for x1, x2, x3, x4 in itertools.permutations(a): if isfind: break for op1, op2, op3 in itertools.product('+-*/', '+-*/', '+-*/'): res = ''.join(['((', x1, op1, x2, ')', op2, x3, ')', op3, x4]) if abs(eval(res)-24)<0.01: print(''.join([nums[int(x1)], op1, nums[int(x2)], op2, nums[int(x3)], op3, nums[int(x4)]])) isfind = True break if not isfind: print('NONE') except: break