HOWTO · Python

Contar sílabas em Python

Este tutorial demonstra como contar sílabas em python

Nesta página

Python pode contar letras de vogais em uma palavra ou frase, mas essa contagem é apenas uma estimativa aproximada do número de sílabas. Os exemplos a seguir mostram quatro maneiras de contar as letras a, e, i, o e u, incluindo como normalizar maiúsculas e minúsculas e consultar a contagem de cada vogal. Uma das abordagens usa set() para armazenar vogais distintas e verificar se elas pertencem ao conjunto. Esses exemplos não determinam quantas sílabas uma pessoa pronuncia.

Conte as letras das vogais com um laço e uma instrução if

Um laço verifica cada caractere, e uma instrução if soma um à contagem quando o caractere pertence à sequência de vogais. Chamar casefold() primeiro permite que a mesma verificação reconheça vogais inglesas maiúsculas e minúsculas. Esta é a opção mais direta quando você precisa de um único total.

Execute este exemplo:

O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.

word = "Beautiful"
vowels = "aeiou"
count = 0

for letter in word.casefold():
    if letter in vowels:
        count += 1

print(count)
5

O resultado é cinco ocorrências de letras que representam vogais. O u repetido é contado duas vezes porque este laço conta ocorrências, e não letras distintas.

Conte as vogais com uma compreensão de dicionário

Use um dicionário quando quiser uma contagem separada de ocorrências para cada vogal. A compreensão percorre as vogais para criar as chaves e, em seguida, soma os caracteres correspondentes na palavra normalizada para obter o valor de cada uma. A variável usada na comparação deve ser o caractere da palavra; comparar com a chave produz as contagens pretendidas para cada vogal.

O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.

word = "Beautiful".casefold()
vowel_counts = {
    vowel: sum(1 for letter in word if letter == vowel)
    for vowel in "aeiou"
}
print(vowel_counts)
{'a': 1, 'e': 1, 'i': 1, 'o': 0, 'u': 2}

Este dicionário apresenta frequências de letras, não contagens de sílabas. Uma vogal sem correspondências continua presente no dicionário com o valor zero.

Conte as vogais com dict.fromkeys()

dict.fromkeys() inicializa uma chave para cada vogal, todas com o mesmo valor inicial. Neste caso, cada valor começa em zero; depois, o laço incrementa a entrada correspondente a cada caractere que corresponda a uma vogal. Esta abordagem é útil quando você quer ver separadamente as etapas de inicialização e acumulação.

O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.

word = "Beautiful".casefold()
vowel_counts = dict.fromkeys("aeiou", 0)

for letter in word:
    if letter in vowel_counts:
        vowel_counts[letter] += 1

print(vowel_counts)
{'a': 1, 'e': 1, 'i': 1, 'o': 0, 'u': 2}

Como os valores do dicionário são números inteiros, compartilhar o valor inicial é seguro neste caso. As chaves são as cinco letras minúsculas que representam vogais, e a ordem de iteração segue a sequência fornecida.

Conte as letras das vogais com um conjunto e uma função

Um conjunto permite verificar se um elemento pertence a uma coleção de vogais distintas. Coloque a lógica em uma função para reutilizá-la com outras palavras. A função retorna uma contagem, deixando para quem a chama decidir se vai exibi-la ou combiná-la com outro processamento.

O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.

def count_vowel_letters(word):
    vowels = set("aeiou")
    return sum(1 for letter in word.casefold() if letter in vowels)


print(count_vowel_letters("Beautiful"))
5

Embora o conjunto contenha cada vogal apenas uma vez, cada ocorrência correspondente na palavra contribui com um para o total. Esta versão também converte letras inglesas maiúsculas para minúsculas antes de verificar se pertencem ao conjunto.

Entenda o que a contagem de vogais conta e o que não conta

Estes exemplos contam ocorrências das cinco letras básicas que representam vogais em inglês. Eles não separam palavras em sílabas pronunciadas: grafia e pronúncia não têm uma correspondência exata, e uma letra que representa uma vogal pode ser muda ou combinar-se com outra letra para representar um único som. Por exemplo, o código encontra cinco ocorrências de letras que representam vogais em Beautiful, enquanto a palavra tem três sílabas pronunciadas. Essa diferença mostra por que contar letras de vogais não é uma forma confiável de contar sílabas.

Os exemplos também usam um alfabeto intencionalmente pequeno. Vogais acentuadas, y e regras ortográficas específicas de cada idioma não estão incluídas; por isso, adapte o conjunto de caracteres ao texto que processar. casefold() normaliza maiúsculas e minúsculas; não remove acentos nem infere a pronúncia. Para obter uma estimativa rápida e aproximada em textos em inglês, esses padrões são simples e transparentes. Para contar com segurança as sílabas pronunciadas, contar apenas letras de vogais não basta.