代码如下
import copy
symbol=str(input("运算符号:"))
number=str(input("数字"))
target=int(input("目标数字"))
if len(symbol)!=len(number)-1:
print ("无解")
else:
l_n,l_s,l_n_1,l_s_1,suc,l1,l2=[],[],[],[],0,[],[]
'''
def list(a,b,c):
for i in range(0, len(a)):
a[i] = b.count(c[i])
list(l_s,symbol,l_s_1)
list(l_n,number,l_n_1)
'''
#获取运算符号与数字列表
for i in range(0,len(symbol)):
l_s.append(symbol[i])
for i in range(0,len(number)):
l_n.append(int(number[i]))
#定义计算方式
def cal(sym,a):
global temp
if sym in "+":
temp+=a
if sym in "-":
temp-=a
if sym in "*":
temp*=a
if sym in "/":
temp/=a
#获取运算符号与数字全排列列表
def listing(n,a,b,m):
if a>=b:
m.append(copy.deepcopy(n))
else:
for i in range(a,b):
n[a],n[i]=n[i],n[a]
listing(n,a+1,b,m)
n[a],n[i]=n[i],n[a]
listing(l_s,0,len(l_s),l1)
listing(l_n,0,len(l_n),l2)
#去重
for i in range(0,len(l1)):
if l1[i] not in l_s_1:
l_s_1.append(l1[i])
for i in range(0,len(l2)):
if l2[i] not in l_n_1:
l_n_1.append(l2[i])
#遍历
for i in range(0,len(l_s_1)):
for j in range(0,len(l_n_1)):
temp=l_n_1[j][0]
for k in range(0,len(l_s)):
cal(l_s_1[i][k],l_n_1[j][k+1])
if temp==target:
for k in range(0,len(l_s)):
print(l_n_1[j][k],l_s_1[i][k],end="")
print(l_n_1[j][-1],"=",target)
suc+=1
if suc==0:
print("无解")
如果要用的话,请放在python3.0以上食用