有没有一种方法可以编辑此程序,以便它以给定数量的元音返回列表中的单词数?
我已经尝试过,但是似乎无法返回正确的数字,而且我不知道我的代码输出什么。
(我是初学者)
def getNumWordsWithNVowels(wordList, num):
totwrd=0
x=0
ndx=0
while ndx<len(wordList):
for i in wordList[ndx]:
if(i=='a' or i=='e' or i=='i' or i=='o' or i=='u' or i=='A' or i=='E' or i=='I' or i=='O' or i=='U'):
x+=1
if x==num:
totwrd+=1
ndx+=1
return totwrd
print(getNumWordsWithNVowels(aList,2))
这将输出“ 2”,但应该输出“ 5”。
答案 0 :(得分:1)
您可以将sum
函数与生成器表达式一起使用:
def getNumWordsWithNVowels(wordList, num):
return sum(1 for w in wordList if sum(c in 'aeiou' for c in w.lower()) == num)
这样:
aList = ['hello', 'aloha', 'world', 'foo', 'bar']
print(getNumWordsWithNVowels(aList, 1))
print(getNumWordsWithNVowels(aList, 2))
print(getNumWordsWithNVowels(aList, 3))
输出:
2 # world, bar
2 # hello, foo
1 # aloha