Как вывести конечный результат цикла в python?

Как вывести конечный результат цикла в python? Есть функция которая считает гласные в слове

def get_count(sentence):
    i = 0
    for index in range(len(sentence)):
        if sentence[index] == "a" or sentence[index] == "e" or sentence[index] == "e" or sentence[index] == "i" or sentence[index] == "o" or sentence[index] == "u":
            i = i + 1
            print(i)
        else:
            print("Not a vowel")

get_count("aeib")

И при замене print(i) на return i выводится просто 1


Ответы (3 шт):

Автор решения: MBo
def get_count(sentence):
    i = 0
    for index in range(len(sentence)):
        if sentence[index] in {"a", "e", "i", "u", "o"}:
            i += 1
    return i

print(get_count("aeib"))

А поскольку индексы вам не нужны, n1tr0xs подсказывает использовать более простой цикл:

def get_count(sentence):
    i = 0
    for letter in sentence:
        if letter in {"a", "e", "i", "u", "o"}:
            i += 1
    return i
→ Ссылка
Автор решения: Evrik

Если нужно только количество гласных букв, то можно так

def get_count(sentence):
    return len(list(filter(lambda char: char in "aeiuo", sentence)))

print(get_count("aeib"))

В Вашем случае выводится единица потому что return сразу завершает выполнение функции, т.е. в Вашем случае при нахождении первой гласной буквы. Чтобы Ваш код работал правильно, нужно return i поместить после цикла

→ Ссылка
Автор решения: CrazyElf

Ну и до кучи совсем уж "однострочник" в "функциональном стиле" )

def get_count(sentence):
    return sum(map({"a", "e", "i", "u", "o"}.__contains__, sentence))

print(get_count("aeib"))
→ Ссылка