1
resposta

Identificador de vogais

#Exercicio 3

def Contar_Vogais(texto):
    contador = 0
    texto = texto.lower()
    caracteres = 'a,e,i,o,u'
    for char in caracteres:
    #    texto = texto.replace(char, "")
        contador += 1
    return contador


texto = input('Digite um texto: ')
cont_vogais = Contar_Vogais(texto)
print (f'O texto  -  {texto} - contém {cont_vogais} vogais.  ')

Ao fazer o teste na frase "A linguagem Python é muito versátil. " não contou as vogais acentuadas. Para resolver este problema do código tenho que entrar com todas as possíveis combinações de acento e vogais no código " caracteres = 'a,e,i,o,u' "? Teria um código mais simples? Obrigado

1 resposta

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.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!