Возврат количества слов в списке с заданным количеством гласных - PullRequest
0 голосов
/ 15 февраля 2019

Есть ли способ отредактировать эту программу так, чтобы она возвращала количество слов в списке с заданным количеством гласных?

Я пытался, но не могу вернуть правильное числои я не знаю, что выводит мой код.

(я новичок)

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))

Thisвыводит «2», но предполагается выводить «5».

1 Ответ

0 голосов
/ 15 февраля 2019

Вы можете использовать функцию 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...