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.