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

Я использую Python 3.6.0. Я заметил, что вывод из моего кода и выдачи ответов отличается от калькуляторов, и я не мог понять, почему.

L = [5,5,2,3,4,5]

for i in range(len(L)):
    L[i] *= 1000

for i in range(len(L)):
    if i == 0:
        L[i] = int(L[i]*0.6+L[i+1]*0.2)

    if i < (len(L)-1) and i != 0:
        L[i] = int(L[i-1]*0.2+L[i]*0.6+L[i+1]*0.2)

print(L)

Вывод кода:

[4000, 4200, 2640, 3128, 4025, 5000]

Однако, кажется, что есть проблема с вычислениями, когда я выше 0. Например:

Когда i равен 2, L [2] = int (L [1] * 0,2 + L [2] * 0,6 + L [3] * 0,2) = 2800

но вывод программы - 2640. Где источник ошибки?

Буду очень признателен, если кто-нибудь сможет мне помочь с этим.

1 Ответ

0 голосов
/ 15 сентября 2018

Я думаю, что проблема в том, что вы изменяете массив по мере прохождения.То есть вы пытаетесь вычислить новый список из старого, но поскольку вы ссылаетесь на значения, которые вы уже изменили, это мешает вычислению.

Если это проблема,исправить это просто - просто создайте новый список, скажем M, и замените L на M во всем, кроме формул справа от знаков =.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...