相似的方法return 不同的结果
Similar methods return different results
我有 2 种方法都应该 return (20, 15, 3, 0, 7, -50)
,但第二种方法 return 是 (20, 15, 3, 0, 7, -200)
。这可能与变量的顺序有关,但我已经尝试更改它但他们仍然没有 return 相同的答案。
代码:
def method1():
a = 10
b = 3
c = 2
d = 5
e = 5
f = -30
f, b, c, d, e, a = (2*a+f)*e, b*e, c+1, (a*(7*c+2)+f*e)//(b*e), e+2, a*c
return (a,b,c,d,e,f)
def method2():
a = 10
b = 3
c = 2
d = 5
e = 5
f = -30
g,h,i,j,k,l = a,b,c,d,e,f
d = (g*(7*i+2)+l*k)//(h*k)
f = 2*(g+l)*k
a = g*i
b = h*k
c = i+1
e = k + 2
return (a,b,c,d,e,f)
我看到了困惑。问题是计算f变量时method2
中的括号:
f = 2*(g+l)*k
根据您的代码逻辑,它在数学上等于:
f = 2*(a+f)*e
这使得 a+f
然后乘以 2
然后 k
。在 method1
你做出:
f = (2*a+f)*e
这使得 2*a
然后求和 f
然后将结果乘以 e
。两种方法的数学运算相似但又不同!
我有 2 种方法都应该 return (20, 15, 3, 0, 7, -50)
,但第二种方法 return 是 (20, 15, 3, 0, 7, -200)
。这可能与变量的顺序有关,但我已经尝试更改它但他们仍然没有 return 相同的答案。
代码:
def method1():
a = 10
b = 3
c = 2
d = 5
e = 5
f = -30
f, b, c, d, e, a = (2*a+f)*e, b*e, c+1, (a*(7*c+2)+f*e)//(b*e), e+2, a*c
return (a,b,c,d,e,f)
def method2():
a = 10
b = 3
c = 2
d = 5
e = 5
f = -30
g,h,i,j,k,l = a,b,c,d,e,f
d = (g*(7*i+2)+l*k)//(h*k)
f = 2*(g+l)*k
a = g*i
b = h*k
c = i+1
e = k + 2
return (a,b,c,d,e,f)
我看到了困惑。问题是计算f变量时method2
中的括号:
f = 2*(g+l)*k
根据您的代码逻辑,它在数学上等于:
f = 2*(a+f)*e
这使得 a+f
然后乘以 2
然后 k
。在 method1
你做出:
f = (2*a+f)*e
这使得 2*a
然后求和 f
然后将结果乘以 e
。两种方法的数学运算相似但又不同!