很抱歉,很明显我在做什么错,但是我似乎无法弄清楚为什么我的代码给我索引超出范围的错误。我是初学者,请放轻松。
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
答案 0 :(得分:0)
在while
循环中,您使用i<=5
。 Python列表从索引0
开始,这意味着具有5个元素的列表的索引值将从0
到4
。将i<=5
替换为i<5
,它应该可以工作。
还有一点提示:在这种情况下,for
循环可能比while
循环更好。像这样:
for i in range(0,5):
# code goes here
此操作将迭代0
(包括)和5
(不包括)之间的所有整数,因此它将从0
到4
,即你想要什么。
答案 1 :(得分:0)
使用zip可能比摆弄索引更好。
使用:
for a,b,g,d in zip(z_alpha, z_beta, z_gamma, z_delta):
added_zs = a + b + g + d