2017-08-01 73 views
0
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))) 

回答

-1
a.append(a[-1] ** ((1+((d*c)/2))/(1-((d*c)/2)))) 
+0

我在评论后添加了更多内容。当测试你的答案时,这些值并不一样。 – dlsj

+0

我收回来了,Moe我错误地输入了我的代码,而不是相乘。这工作,谢谢你! – dlsj

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],您可以通过指数正常访问。

编辑:

我要通过((1+((d*c)/2))/(1-((d*c)/2)))a你最近的编辑注意到,但你在代码示例,这意味着电源使用**。您应该改用*

+0

好吧,我的印象是,简单地设置列表的长度将允许我访问索引,不要猜测。 Upvote为此并捕捉我的错误,非常感谢。 – dlsj

+0

很高兴帮助! –