Olá, Ricardo, como vai?
O seu código apresenta um ponto de atenção na lógica do laço de repetição, pois da maneira como está escrito, ele percorre a string de caracteres e incrementa o contador para cada item dela, resultando sempre em 9, independentemente do texto digitado. Para que a contagem funcione, é necessário percorrer cada letra do texto inserido e verificar se essa letra faz parte do grupo de vogais definido.
Sobre as vogais acentuadas, uma alternativa nativa é utilizar o módulo unicodedata para normalizar o texto antes da verificação. Isso transforma caracteres como é em e, permitindo que a sua variável de controle de vogais permaneça curta.
import unicodedata
def contar_vogais(texto):
# Normaliza para decompor acentos (ex: 'á' vira 'a' + '´')
texto_normalizado = unicodedata.normalize('NFD', texto)
# Filtra apenas caracteres que não são marcas de acentuação
texto_limpo = "".join(c for c in texto_normalizado if not unicodedata.combining(c))
vogais = 'aeiou'
contador = 0
for char in texto_limpo.lower():
if char in vogais:
contador += 1
return contador
frase = "A linguagem Python é muito versátil."
total = contar_vogais(frase)
print(f"O texto contém {total} vogais.")
Essa abordagem evita que você precise digitar manualmente todas as variações como ã, á, à, â, é, ê, í, ó, ô, õ, ú, tornando o código mais robusto para qualquer entrada de texto em português.
Qualquer outra dúvida sobre a lógica de programação ou sobre o exercício, o fórum está a disposição.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!