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

如何实现Python函数uniqueVowels提取字符串中的无重复元音?

修正Python的uniqueVowels函数实现

Hey,我来帮你搞定这个uniqueVowels函数的问题!原代码的逻辑完全跑偏了,根本没法实现你要的功能,我给你修正一下,顺便拆解下问题所在。

原代码的核心问题

  • 逻辑错误:它不是在收集输入字符串里出现的元音,反而每次碰到元音就把初始的固定字符串"aeiou"转成集合再转列表,这完全和输入内容无关,自然得不到正确结果。
  • 语法问题:用了Python2的print语句(不带括号),在Python3环境里会直接报错。

正确实现方式(两种可选)

方式一:保留元音首次出现的顺序(符合示例输出顺序)

这个版本会按照元音在输入字符串中第一次出现的顺序输出,刚好能得到你要的aouie结果:

def uniqueVowels(input_str):
    # 定义元音集合,快速判断字符是否为元音
    vowels = {"a", "e", "i", "o", "u"}
    # 用列表记录已出现的元音,保证顺序和唯一性
    seen_vowels = []
    for letter in input_str:
        # 如果当前字符是元音且还没被记录过,就加入列表
        if letter in vowels and letter not in seen_vowels:
            seen_vowels.append(letter)
    # 把列表转成字符串输出
    print(f"Unique vowels: {''.join(seen_vowels)}")

# 测试调用
uniqueVowels("dalhousie university")

运行这段代码,输出就是Unique vowels: aouie,完全符合要求。

方式二:用集合快速去重(顺序不限)

如果题目不要求顺序,用集合实现会更简洁,集合会自动帮我们处理去重:

def uniqueVowels(input_str):
    vowels = {"a", "e", "i", "o", "u"}
    unique_vowels = set()
    for letter in input_str:
        if letter in vowels:
            unique_vowels.add(letter)
    # 转成字符串输出,顺序可能随机,但满足无重复要求
    print(f"Unique vowels: {''.join(unique_vowels)}")

# 测试调用
uniqueVowels("dalhousie university")

这个版本的输出顺序可能和示例不同,但同样满足“无重复元音”的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:10:54