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

Python运行字符编码脚本时报string index out of range错误求排查

代码问题及修复方案

存在的问题

  • 循环边界逻辑错误:Python 字符串索引从 0 开始,长度为 len(x) 的字符串有效索引范围是 0 ~ len(x)-1。你的 while 循环判断条件为 y <= len(x),且循环内先执行 y=y+1 操作,最终会出现 y = len(x) 的情况,此时访问 x[y] 超出字符串索引范围,直接触发 IndexError。
  • 字符判断逻辑鲁棒性差:当前使用并列 if 逐一判断单字符,后续扩展其他字符映射时会大幅增加代码量;且未覆盖未定义字符的处理逻辑,遇到空格、a、b 之外的字符时不会向列表插入任何值,会导致输出列表和输入字符串长度不一致。

修复方案

优化写法(推荐)

使用 for 循环遍历字符串+字典映射实现功能,无需手动维护索引,彻底避免越界问题,后续扩展字符映射只需要修改字典即可:

# 字符与数值映射字典,新增映射只需在此追加键值对
char_map = {
    " ": 1000,
    "a": 1001,
    "b": 1002
}

z = input("input the word:")
x = z.strip()
g = []

for char in x:
    # 未定义字符默认填充0,可根据需求修改默认值
    g.append(char_map.get(char, 0))

保留原有while逻辑的最小修改

仅调整循环判断条件即可解决索引越界问题:

z=input("input the word:")
x= z.strip()
y= -1
g=[ ]

# 将原条件y<=len(x)修改为y < len(x)-1
while y < len(x)-1:
   y=y+1
   if x[y]==" ":
       g.insert(y,1000)
   if x[y]=="a":
     g.insert(y,1001)
   if x[y]=="b":
       g.insert(y,1002)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:15:04