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

为何索引在范围内仍触发‘list index out of range’错误?

问题分析与解决

报错核心原因

  1. 单个元素长度不足:循环遍历anime_series_list的每个item时,若某个item的元素个数少于3(比如只有2个元素),访问item[2]必然触发list index out of range。你验证的是horror在某个元素的索引2位置,但不代表所有item都具备3个元素。
  2. 逻辑结构错误:三个if加else的写法存在问题,else仅与最后一个if绑定,只要最后一个条件不满足,就会输出无效提示并终止循环,哪怕前面的条件已经匹配成功。
  3. 打印对象错误:你打印的是anime_series_list[0]/[1]/[2],这是列表的固定索引元素,而非当前匹配的item,逻辑完全偏离需求。

修正后的代码

genre = input('What genre do you feel like watching?\nhorror\npsychological horror\nadventure\naction\nEnter one of the genre seen above here: ')

# 标记是否找到匹配项
found = False
for item in anime_series_list:
    # 先检查当前item长度,避免索引越界
    if len(item) >= 3:
        if item[0] == genre or item[1] == genre or item[2] == genre:
            print(''.join(item))
            found = True
    # 可选:对长度不足的条目给出提示
    else:
        print(f"警告:条目{item}元素数量不足,无法匹配全部索引")

# 循环结束后统一处理无匹配的情况
if not found:
    print('INVALID OPTION')

关键修正点

  • 索引安全检查:用len(item)>=3确保访问item[2]前不会触发越界错误。
  • 合并条件判断:用or合并三个匹配条件,逻辑更简洁高效。
  • 匹配状态标记:用found变量记录是否找到匹配,循环结束后统一处理无效提示,避免中途错误终止循环。
  • 打印正确对象:打印当前匹配的item,而非列表的固定索引元素,符合需求逻辑。

内容的提问来源于stack exchange,提问作者Rick Sky

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 00:36:29