from __future__ import division
import itertools
n = raw_input('input 4 number sep by comma: 1,2,3,4 -> ')
t = list(itertools.permutations(n.split(','),4))
x = list(itertools.product(* (['+', '-', '*', '/'],) * 3))
for r in t:
for i in x:
if eval(("(((%s%s%s)%s%s)%s%s)") % (r[0],i[0], r[1], i[1], r[2], i[2], r[3])) == 24 :
print ("(((%s%s%s)%s%s)%s%s)=24") % (r[0],i[0], r[1], i[1], r[2], i[2], r[3])
暴力法行么?
追问看不懂〜〜
追答你一步一步运行,然后print出来变量就看懂了。
输入4个数,
t列表就是他们的全排列。
x就是4则运算,选3个的全排列。
然后用for循环把他们全部列举出来。每个列举就是 (((1 X 2 ) + 3) / 4) 类似的字符串。
然后用eval 把这个式子的值算出来,等于24的话,就打印出来。
本回答被提问者采纳