You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python斐波那契数列for循环迭代时无法解决list index out of range错误

问题原因分析
  • 索引取值错误:当i≥2进入else分支时,当前listy的长度仅为i(i从0到i-1共i次循环已完成,每次append1个元素),列表索引范围是0 ~ i-1,你调用listy[i]属于访问超出列表长度的位置,直接触发索引越界报错。你需要取的是当前列表的最后两个元素,对应索引应为i-2和i-1,而非i和i-1。
  • 循环范围冗余:你使用range(0, length+1)作为循环范围,最终返回的列表长度为length+1,不符合生成指定长度数列的需求。
修正后代码(保留原有结构)
def attempt2(length):
    listy=[]
    for i in range(0,length): # 调整循环次数为length次,生成指定长度的数列
        if i == 0:
            listy.append(1)
        elif i == 1:
            listy.append(1)
        else:
            listy.append(listy[i-2]+listy[i-1]) # 修正索引为前两项的正确位置
    return listy
验证示例

调用attempt2(5)会返回[1, 1, 2, 3, 5],符合长度为5的斐波那契数列预期。

内容的提问来源于stack exchange,提问作者luke.morgan.pg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 15:27:03