编写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
相关产品推荐
相关产品推荐

