Подобные методы возвращают разные результаты - PullRequest
0 голосов
/ 19 октября 2018

У меня есть 2 метода, которые оба должны возвращать (20, 15, 3, 0, 7, -50), но второй метод возвращает (20, 15, 3, 0, 7, -200).Вероятно, это связано с порядком переменных, но я попытался изменить его, и они все еще не возвращают тот же ответ.

Код:

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)

1 Ответ

0 голосов
/ 19 октября 2018

Я вижу замешательство.Проблема заключается в круглых скобках в method2 при вычислении переменной f:

f = 2*(g+l)*k

, которая, согласно вашему логике кода, математически равна:

f = 2*(a+f)*e

Это делает a+f затемумножается на 2, затем k.На method1 вы набираете:

f = (2*a+f)*e

, что составляет 2*a, затем суммирует f, а затем умножает результат на e.Математические операции одинаковы в обоих методах, но они разные!

...