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

Python实现删除字符串辅音功能时循环索引越界报错求解决

报错根因

  • 遍历索引基于字符串初始长度生成,你在循环过程中直接修改了字符串stri的长度,字符串持续缩短后,后续迭代的i值会超过当前字符串的最大索引,直接触发IndexError
  • 功能逻辑完全颠倒:需求为删除所有辅音(保留元音),你的代码逻辑是匹配到元音就执行删除操作,和需求完全相反
  • 字符删除逻辑存在错误:最后一位字符的删除语句逻辑错误,即使解决索引问题也无法得到预期结果

修复方案

建议直接通过字符筛选生成新字符串,不修改原遍历对象,完全规避索引问题,实现逻辑更简洁稳定:

input_str = input("enter a string: ")
def change(stri):
    vowels = {'a','e','i','o','u','A','E','I','O','U'}
    # 筛选所有元音字符拼接,等价于删除所有辅音
    return ''.join([char for char in stri if char in vowels])
output_str = change(input_str)
print(output_str)

如果一定要沿用循环修改原字符串的写法,需要调整为倒序遍历,倒序删除靠后的字符不会影响前面未遍历的索引,不会触发越界问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:27:01