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

Python终端图形代码意外触发IndexError索引越界错误该如何解决?

索引越界错误的原因及修复方案

问题1:rock数组索引越界

你定义的rock数组只有12个元素,合法索引范围是0~11,但代码中所有print语句都调用了rock[12],超出了数组最大索引:

# 原代码rock定义,共12个元素
rock = ["on_cyan","on_cyan","on_cyan","on_cyan","on_cyan","on_cyan","on_cyan","on_cyan","on_cyan","on_cyan","on_cyan","on_cyan"]
# 但print语句中存在如下调用,索引12不存在
colored(ongroundls[31],"grey",rock[12])

修复方法:给rock数组增加1个元素,总长度改为13,适配13个调用位:

rock = ["on_cyan"] * 13

问题2:while循环逻辑错误导致索引越界

  • 原代码中pos - 1是无效计算,没有重新赋值给pos,会导致pos值固定,进入死循环,若初始pos超过ongroundls的最大索引31,就会持续触发越界错误。
  • 代码中pos == random是判断语句,并非赋值,且random是模块对象,不能直接赋值给pos变量,逻辑完全错误。
    修复方法:修改while循环内的逻辑,同时限制pos的合法范围:
while pos > 19 and pos < len(ongroundls): # 增加边界判断,防止越界
    ongroundls[pos] = "#"
    pos -= 1 # 正确赋值,pos递减
    if pos == random.randrange(0, 32, 1):
        pos = random.randrange(20, 32) # 按需修改为你需要的随机pos范围,保证在0~31之间
    # 保留原print逻辑

问题3:可选的边界校验增强

所有给列表赋值的位置前增加边界判断,避免后续修改参数时再次触发越界:

# 示例:给ongroundls赋值前校验
if 0 <= rannum < len(ongroundls):
    ongroundls[rannum] = "4"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:45:04