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

Python编写解码器出现List index out of range索引越界报错如何处理

问题原因

  • 核心问题是CodeNum变量为全局初始化,处理完前一个编码词后不会自动重置:每次内层循环遍历CodeWordsUpC时都会从上一次停下的位置继续递增,不会从头匹配新输入的编码词
  • 硬编码的循环上限55不符合实际列表长度:你提供的LettersUpC只有31个元素,对应的CodeWordsUpC长度大概率和它一致,远小于55,当CodeNum递增超过列表实际长度时,访问索引就会触发越界报错
  • 没有做编码词不存在的兜底判断:如果输入的编码词根本不在CodeWordsUpC里,内层循环会把CodeNum加到超过列表长度,下次访问索引直接报错

修复方案

最小改动版本(保留原有逻辑)

while RTs < 9:
    CodeNum = 0 # 每次处理新编码词前重置索引,从头开始匹配
    CodeWord = str(input("Code-word: "))
    Stop = ["Stop", "Exit", "End", "Terminate"]
    if CodeWord in Stop:
        break
    # 循环上限改成列表实际长度,避免硬编码错误
    while CodeNum < len(CodeWordsUpC):
        if CodeWord == CodeWordsUpC[CodeNum]:
            output.append(LettersUpC[CodeNum])
            break
        else:
            CodeNum = CodeNum + 1
    # 加兜底判断,编码词不存在时给提示
    else:
        print(f"输入的编码词{CodeWord}不存在,请重新输入")
    RTs = RTs + 1

优化版本(用内置方法简化逻辑)

while RTs < 9:
    CodeWord = str(input("Code-word: "))
    Stop = ["Stop", "Exit", "End", "Terminate"]
    if CodeWord in Stop:
        break
    if CodeWord in CodeWordsUpC:
        idx = CodeWordsUpC.index(CodeWord)
        output.append(LettersUpC[idx])
    else:
        print(f"输入的编码词{CodeWord}不存在,请重新输入")
    RTs = RTs + 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:15:02