【发布时间】:2018-01-02 12:45:25
【问题描述】:
我想制作一个 Tribonacci 序列。 (每个新项目都是该列表中前三个项目的总和。)但是每当我使用 while/for 循环时,它都会显示列表索引超出范围错误。谁能弄清楚这段代码有什么问题?
def tribonacci(signature, n):
count = 0
newlist = []
while (len(newlist)<=n):
newitem = signature[count]+signature[count+1]+signature[count+2]
newlist.append(newitem)
count = count+1
print signature + newlist
tribonacci([1,1,1], 5)
在上面的代码中,我的预期输出是 [1,1,1,3,5,9,17,31]
Traceback (most recent call last):
File "C:\Users\Vasanth\Desktop\sample.py", line 9, in <module>
tribonacci([1,1,1], 5)
File "C:\Users\Vasanth\Desktop\sample.py", line 5, in tribonacci
newitem = signature[count]+signature[count+1]+signature[count+2]
IndexError: list index out of range
【问题讨论】:
-
您没有发布回溯,所以这是推测性的,但我敢打赌
signature在您开始时包含少于三个项目。 -
您更新了计数,但您从未真正将项目附加到
signature,您使用它来计算newitem,尽管这可能不是您的本意。 -
你使用 count 的方式会导致失败。一旦计数为 4 或更高,您将超出签名范围...您必须以另一种方式处理它 ///
-
如果您正在编写新代码,您绝对应该认真考虑以 Python 3 为目标。Python 2 的生命周期结束被推迟,但最初的 EOL 日期距离现在。
-
@A.Joly 只要
count大于零,错误实际上就会发生。
标签: python list concatenation indexoutofrangeexception