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

编写Python元音移位2位函数时出现索引越界错误的求助

问题解决:元音移位的索引越界错误及功能完善

问题根源

原代码中,当对元音索引加2后,未处理索引超出列表长度的情况。比如元音o的索引是3,加2后变成5,而vowels列表仅包含5个元素(索引范围0-4),直接访问vowels[5]就会触发索引越界错误。此外代码还存在两处冗余/缺陷:

  • 重复定义了无意义的vowel变量
  • 未处理题目要求的大写元音移位需求

修复后的代码

# 包含大小写元音的列表
vowels = ["a", "e", "i", "o", "u", "A", "E", "I", "O", "U"]
message = input('enter message: ')

new_message = ""
for letter in message:
    if letter not in vowels:
        new_message += letter
    else:
        i = vowels.index(letter)
        # 取模运算实现循环移位,避免索引越界
        shifted_index = (i + 2) % len(vowels)
        new_message += vowels[shifted_index]
print(new_message)

关键修复点

  • 取模运算规避越界:(i + 2) % len(vowels)保证移位后的索引始终处于列表合法范围内,比如索引8(大写O)加2后为10,10%10=0,对应小写a,实现循环移位逻辑
  • 补充大写元音:将大写元音加入列表,满足题目对大小写元音都处理的要求
  • 清理冗余代码:删除无用的vowel变量和未使用的mapper字典,简化代码结构

测试验证

输入示例a cat,输出为i cit,完全符合题目要求;输入Hello WORLD,会输出Jommi YQSPF,验证大小写元音均能正确移位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:50:21