|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目要求是这样的:
使用PYTHON的int运算+,-,*,/,**和数字2,3,4,5,构造一个表达式,使得所有4个数字和3个运算符各一次,计算得到26.
我的思路是使用穷举的方法,但是实际运行的结果是不正确的,请大神看看哪里的逻辑有问题,附上代码;
- s=[2,3,4,5]
- def convert(op):
- if (op==0):
- return '+'
- elif (op==1):
- return '-'
- elif (op==2):
- return '*'
- elif (op==3):
- return '/'
- elif (op==4):
- return '**'
- def cal(a,b,op):
- if (op==0):
- return a+b
- elif (op==1):
- return a-b
- elif (op==2):
- return a*b
- elif (op==3):
- return a/b
- elif (op==4):
- return a**b
- def result(n1,op1,n2,op2,n3,op3,n4):
- return str(n1)+convert(op1)+str(n2)+convert(op2)+str(n3)+convert(op3)+str(n4)
- def getresult():
- r1=0
- r2=0
- r3=0
- for i in range(0,4):
- for j in range(0,4):
- for k in range(0,5):
- if(i!=j):
- r1=cal(s[i],s[j],k)
- for l in range(0,4):
- for m in range(0,5):
- if (i!=l and j!=l and k!=m):
- r2=cal(r1,s[l],m)
- for n in range(0,4):
- for o in range(0,5):
- if (i!=n and j!=n and l!=n and k!=o and m!=o ):
- r3=cal(r2,s[n],o)
- if (r3==26):
- return result(s[i],k,s[j],m,s[l],o,s[n])
- print(getresult())
复制代码
运行结果是3/2+5*4,这个结果明显不是26. |
|