Neste programa, você aprenderá a contar o número de cada vogal em uma string usando dicionário e compreensão de lista.
Para entender este exemplo, você deve ter conhecimento dos seguintes tópicos de programação Python:
- Python for Loop
- Python Strings
- Métodos de String
Código-fonte: usando o dicionário
# Program to count the number of each vowels # string of vowels vowels = 'aeiou' ip_str = 'Hello, have you tried our tutorial section yet?' # make it suitable for caseless comparisions ip_str = ip_str.casefold() # make a dictionary with each vowel a key and value 0 count = ().fromkeys(vowels,0) # count the vowels for char in ip_str: if char in count: count(char) += 1 print(count)
Resultado
('o': 5, 'i': 3, 'a': 2, 'e': 5, 'u': 3)
Aqui, pegamos uma string armazenada em ip_str. Usando o método casefold()
, o tornamos adequado para comparações sem caso. Basicamente, esse método retorna uma versão em minúsculas da string.
Usamos o método de dicionário fromkeys()
para construir um novo dicionário com cada vogal como sua chave e todos os valores iguais a 0. Esta é a inicialização da contagem.
Em seguida, iteramos sobre a string de entrada usando um loop for.
Em cada iteração, verificamos se o caractere está nas chaves do dicionário ( True
se for vogal) e incrementamos o valor em 1 se verdadeiro.
Código-fonte: usando uma lista e uma compreensão de dicionário
# Using dictionary and list comprehension ip_str = 'Hello, have you tried our tutorial section yet?' # make it suitable for caseless comparisions ip_str = ip_str.casefold() # count the vowels count = (x:sum((1 for char in ip_str if char == x)) for x in 'aeiou') print(count)
O resultado deste programa é o mesmo acima.
Aqui, aninhamos uma compreensão de lista dentro de uma compreensão de dicionário para contar as vogais em uma única linha.
A compreensão do dicionário é executada para todos os caracteres de vogais e a compreensão da lista dentro da compreensão do dicionário verifica se algum caractere na string corresponde a essa vogal específica.
Ao final, é gerada uma lista com 1 s para o número de cada caractere vocálico. O sum()
método é usado para calcular a soma dos elementos de cada lista.
No entanto, este programa é mais lento à medida que iteramos em toda a string de entrada para cada vogal.