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

Python中len()返回长度异常?列表查询作业代码报错求助

问题分析与修正方案

你的代码存在三个关键错误:

  • 索引越界:Python列表索引从0开始,长度为n的列表最后一个元素索引是n-1。你用lista[len(lista)]访问索引等于列表长度的位置,直接触发IndexError,这是代码无法运行的核心原因——不是len()返回了长度+1,是你索引用错了。
  • 错误使用find()方法:find()是字符串方法,用来在字符串里查找子串,不是用来判断列表中是否存在元素的。而且就算用对了,find()找到返回的非0索引会被if视为True,找不到返回的-1也会被视为True,完全起不到判断作用。
  • 未处理边界情况:如果verde是列表最后一个元素,lista[i+1]同样会触发索引越界。

修正后的代码

lista = ["giallo", "verde", "viola", "rosso", "blue"]

# 先判断元素是否存在
if "verde" in lista:
    idx = lista.index("verde")
    # 检查是否有下一个元素
    if idx < len(lista) - 1:
        print(lista[idx + 1])
    else:
        print("'verde' è l'ultimo elemento della lista")
else:
    print("Sono al verde")

代码说明

  1. 用"verde" in lista直接判断元素是否存在,这是Python中最简洁安全的方式,避免了index()方法找不到元素时的报错。
  2. 获取索引后,先判断idx < len(lista)-1:确保verde不是最后一个元素,避免访问lista[idx+1]时越界。
  3. 如果作业默认verde不会出现在列表末尾,可以去掉内层if,但保留会让代码更健壮。

内容的提问来源于stack exchange,提问作者phenixfire 47

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 06:12:35