为什么我的代码中的计算给了我与计算器不同的答案?

时间:2018-09-15 14:29:57

标签: python python-3.x list

我正在使用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 :(得分:2)

我认为问题在于您正在遍历数组。也就是说,您正在尝试从旧列表中计算出一个新列表-但是由于引用的是您已经更改的值,因此该列表会干扰计算。

如果这是问题所在,则解决方法很简单-只需列出一个新列表,例如M,然后在除右侧公式之外的所有内容中将L替换为M =的一侧。