a = []
a.append(0.99)
for i in range(5):
a[i+1] = a[i] * ((1+((d*c)/2))/(1-((d*c)/2)))
a.append(a[i+1])
来自第四行的 IndexError: list index out of range
。
我尝试过一种完全采用不同方法的手,但似乎无法做到正确。输出应该类似于:
[0.99, ####, ####, ####, ####]
我确信这很简单,我相信错误涉及列表的第0个元素,是否有任何帮助机会?
应该吐出相同的答案:
a0 = 0.99
a1 = a0 * ((1+((d*c)/2))/(1-((d*c)/2)))
a2 = a1 * ((1+((d*c)/2))/(1-((d*c)/2)))
a3 = a2 * ((1+((d*c)/2))/(1-((d*c)/2)))
a4 = a3 * ((1+((d*c)/2))/(1-((d*c)/2)))
答案 0 :(得分:0)
当你在python中创建一个列表时,除非使用.append()
,否则你无法访问那些没有值的索引(即使你想要分配它们),这就是你得到索引错误的原因。解决此问题的方法是获得所需大小的None
值或0
值,例如:
a = [0] * 5
a.append(0.99)
for i in range(4):
a[i+1] = a[i] ** ((1+((d*c)/2))/(1-((d*c)/2)))
# no need to append now
现在a
将为[0, 0, 0, 0, 0]
,您可以通过索引正常访问。
编辑:
我在您最近的编辑中注意到您要将a
乘以((1+((d*c)/2))/(1-((d*c)/2)))
,但您在代码示例中使用的是**
,这意味着强大了。您应该使用*
代替。
答案 1 :(得分:-1)
a.append(a[-1] ** ((1+((d*c)/2))/(1-((d*c)/2))))