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

如何用Python实现元音转下一个辅音、辅音转下一个元音?

解决方案:实现元音转下一个辅音、辅音转下一个元音的字符替换

需求回顾

需要实现字符替换规则:

  • 元音字母(a/e/i/o/u)转换为下一个辅音字母(如o→p,a→b)
  • 辅音字母转换为下一个元音字母(如r→u,n→o)
    示例:输入orange,输出puboif

现有代码的问题

你当前的代码仅尝试处理辅音转元音,但存在两个关键问题:

  1. 使用str.replace()循环替换会批量修改所有相同字符,逻辑错误(比如多个相同辅音会被一次性替换)
  2. 用超长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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:30:54