不明白为什么我的代码给我一个 IndexError

Don't understand why my code giving me an IndexError

如果很明显我做错了什么,我很抱歉,但我似乎不明白为什么我的代码给我一个索引超出范围的错误。我是初学者,所以请放轻松。

import statistics
z_alpha = [2,4,4,6,3]
z_beta = [5,6,8,9,2]
z_gamma = [4,6,6,8,2]
z_delta = [5,6,3,1,1]
def Stats():
     average_red = []
     st_dev =[]
     i = 0
     while i<=5:
          added_zs = z_alpha[i] + z_beta[i] + z_gamma[i] + z_delta[i]
          average_z = float(added_zs/4)
          average_red.append(average_z)
          standard = [z_alpha[i], z_beta[i], z_gamma[i], z_delta[i]]
          final_calc_dev = statistics.stdev(standard)
          st_dev.append(final_calc_dev)
          i+=1
     return average_red, st_dev

print(Stats()[0])
print(Stats()[1])

我的错误是:

Traceback (most recent call last):
  File "c:/Users/pedro/Desktop/Py projects/Wave_test.py", line 22, in <module>
    print(Stats()[0])
  File "c:/Users/pedro/Desktop/Py projects/Wave_test.py", line 13, in Stats
    added_zs = z_alpha[i] + z_beta[i] + z_gamma[i] + z_delta[i]
  IndexError: list index out of range

在您的 while 循环中,您使用 i<=5。 Python 列表从索引 0 开始,这意味着具有 5 个元素的列表的索引值将从 04。将 i<=5 替换为 i<5,它应该可以工作。

此外,提示:在这种情况下,for 循环可能比 while 循环效果更好。像这样:

for i in range(0,5):
    # code goes here

这样做是遍历 0(含)和 5(不含)之间的所有整数,因此它会从 04,这就是你想要的。

使用 zip 可能比摆弄索引更好。

使用:

    for a,b,g,d in zip(z_alpha, z_beta, z_gamma, z_delta):
          added_zs = a + b + g + d