如何实现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
相关产品推荐
相关产品推荐

