返回具有给定数量的元音的列表中的单词数

时间:2019-02-14 23:45:04

标签: python function

有没有一种方法可以编辑此程序,以便它以给定数量的元音返回列表中的单词数?

我已经尝试过,但是似乎无法返回正确的数字,而且我不知道我的代码输出什么。

(我是初学者)

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”。

1 个答案:

答案 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