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

Python移除元音代码出现'String index out of range'错误排查与解决

解决移除元音时的"string index out of range"错误

问题原因

你碰到的索引越界问题,核心是循环过程中直接修改了原字符串phrase。
一开始range(len(phrase))是按输入短语的初始长度生成索引序列,但循环里执行phrase = str(phrase[i]).replace(phrase[i], "")时,直接把phrase改成了空字符串(替换当前元音字符后无剩余内容)。后续循环的索引还在按初始长度推进,比如初始长度是5,循环到i=1时phrase已经是空了,i=2再访问phrase[2]自然就超出字符串的有效索引范围了。

修复代码

正确的思路是新建容器存储过滤后的字符,不要修改原输入字符串:

phrase = input("Input: ")
result = ""
vowels = {"a", "A", "e", "E", "i", "I", "o", "O", "u", "U"}
for char in phrase:
    if char not in vowels:
        result += char
print(result)

代码优化建议

  • 用集合存储元音:集合的成员查询效率远高于列表,短语较长时优势更明显
  • 统一大小写判断:把字符转成小写(或大写)后再判断,减少元音的枚举量:
phrase = input("Input: ")
result = ""
vowels = {"a", "e", "i", "o", "u"}
for char in phrase:
    if char.lower() not in vowels:
        result += char
print(result)
  • 列表推导式简化写法:一行完成过滤,简洁且可读性强:
phrase = input("Input: ")
vowels = {"a", "e", "i", "o", "u"}
result = "".join([char for char in phrase if char.lower() not in vowels])
print(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 00:24:18