我正在使用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。错误的根源在哪里?
如果有人可以帮助我,我将不胜感激。
答案 0 :(得分:2)
我认为问题在于您正在遍历数组。也就是说,您正在尝试从旧列表中计算出一个新列表-但是由于引用的是您已经更改的值,因此该列表会干扰计算。
如果这是问题所在,则解决方法很简单-只需列出一个新列表,例如M
,然后在除右侧公式之外的所有内容中将L
替换为M
=
的一侧。