如何用Python实现元音转下一个辅音、辅音转下一个元音?
解决方案:实现元音转下一个辅音、辅音转下一个元音的字符替换
需求回顾
需要实现字符替换规则:
- 元音字母(a/e/i/o/u)转换为下一个辅音字母(如o→p,a→b)
- 辅音字母转换为下一个元音字母(如r→u,n→o)
示例:输入orange,输出puboif
现有代码的问题
你当前的代码仅尝试处理辅音转元音,但存在两个关键问题:
- 使用
str.replace()循环替换会批量修改所有相同字符,逻辑错误(比如多个相同辅音会被一次性替换) - 用超长
vowel字符串映射的方式不直观,且完全没覆盖元音转辅音的逻辑
修正后的完整实现
以下是符合需求的代码,同时实现两种转换逻辑:
def transform_word(s): vowels = {'a', 'e', 'i', 'o', 'u'} result = [] for char in s: if char in vowels: # 元音转下一个辅音:ASCII码+1 result.append(chr(ord(char) + 1)) else: # 辅音转下一个元音:从当前字符的下一位开始找第一个元音 current_ord = ord(char) found = False while current_ord <= ord('z'): current_ord += 1 if chr(current_ord) in vowels: result.append(chr(current_ord)) found = True break # 处理z的情况(z之后没有字母,回到a开始找) if not found: current_ord = ord('a') while current_ord <= ord('z'): if chr(current_ord) in vowels: result.append(chr(current_ord)) break current_ord += 1 return ''.join(result) # 测试示例 s = input("请输入单词:") print(transform_word(s))
代码说明
- 用集合
vowels快速判断字符是否为元音,效率更高 - 元音处理:直接将字符ASCII码+1,得到下一个辅音(符合示例中o→p、a→b的规则)
- 辅音处理:从当前字符的下一位开始遍历,找到第一个出现的元音;如果遍历到z还没找到,就从a开始重新找
- 用列表
result逐个拼接字符,避免字符串拼接的性能损耗
测试输入orange,输出为puboif,完全符合需求。
内容的提问来源于stack exchange,提问作者Ferrari Nevada
相关产品推荐
相关产品推荐

