计算字符串中唯一元音的数量

蝙蝠侠

我有以下任务:

导入sys模块并创建一个带有字符串参数的函数,该函数将打印字符串中唯一元音的数量,无论它是大写还是小写。

例如:

Test 1: The argument swEet should print 1
Test 2: The argument “Aaa aeeE” should print 2
Test 3: The argument "eiOuayOI j_#Ra" should print 5

我有以下代码:

import sys

def count_vowels(args):
    vowels = set()

    for arg in args:
        for char in arg:
            if char.lower() in 'aeiou':
                vowels.add(char)
    return len(vowels)

print(count_vowels(sys.argv[1:]))

测试用例 1 是打印预期输出的唯一测试。其他两个测试用例,测试 2 和测试 3,不打印正确的预期结果。测试 2 打印 5 而不是预期输出 4,测试 3 打印 6 而不是预期输出 5。

破碎基准

我认为你把事情复杂化了。要获取唯一元音的数量,您可以将整个字符串小写,然后调用set()小写字符串以获取一组唯一字母。然后,您可以检查每个元音是否在该集合中。如果是,它会出现在文本中,否则它不会:

def count_vowels(text):
    letters = set(text.lower())
    
    count = 0
    for vowel in 'aeiou':
        if vowel in letters:
            count += 1
    return count

print(count_vowels("Aaa aeeE")) # Prints 2
print(count_vowels("eiOuayOI j_#Ra")) # Prints 5

如果你更喜欢单线,你可以这样做:

def count_vowels(text):
    return sum(1 for vowel in 'aeiou' if vowel in set(text.lower()))

或者这个(如psmears所建议的):

def count_vowels(text):
    return len(set(text.lower()) & set('aeiou'))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章