不明白为什么我的代码给我一个 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 个元素的列表的索引值将从 0
到 4
。将 i<=5
替换为 i<5
,它应该可以工作。
此外,提示:在这种情况下,for
循环可能比 while
循环效果更好。像这样:
for i in range(0,5):
# code goes here
这样做是遍历 0
(含)和 5
(不含)之间的所有整数,因此它会从 0
到 4
,这就是你想要的。
使用 zip 可能比摆弄索引更好。
使用:
for a,b,g,d in zip(z_alpha, z_beta, z_gamma, z_delta):
added_zs = a + b + g + d
如果很明显我做错了什么,我很抱歉,但我似乎不明白为什么我的代码给我一个索引超出范围的错误。我是初学者,所以请放轻松。
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 个元素的列表的索引值将从 0
到 4
。将 i<=5
替换为 i<5
,它应该可以工作。
此外,提示:在这种情况下,for
循环可能比 while
循环效果更好。像这样:
for i in range(0,5):
# code goes here
这样做是遍历 0
(含)和 5
(不含)之间的所有整数,因此它会从 0
到 4
,这就是你想要的。
使用 zip 可能比摆弄索引更好。
使用:
for a,b,g,d in zip(z_alpha, z_beta, z_gamma, z_delta):
added_zs = a + b + g + d