我有以下任务:
导入
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] 删除。
我来说两句