Escreva um programa que leia um arquivo e imprima as letras em ordem decrescente de frequência. Seu programa deve converter todas as entrada para minúsculo e somente contar as letras de a-z. Seu programa não deve contar espaços, dígitos, pontuação ou qualquer outros que não sejam as letras de a-z.
Passo 1
Beleza, vamos lá! O enunciado pede para a gente criar um programa que leia um arquivo de texto e conte com que frequência cada letra de a a z aparece. Depois, o programa deve mostrar essas letras ordenadas da mais frequente para a menos frequente. Vamos trabalhar com letras minúsculas e ignorar qualquer coisa que não seja uma letra (como números, espaços ou pontuação). Para isso, vamos usar conceitos de leitura de arquivos, manipulação de strings e contagem de frequência em programação.
Passo 2
Primeiro, precisamos ler o conteúdo de um arquivo. Em Python, isso é feito usando a função
open()
para abrir o arquivo e o método read()
para ler todo o conteúdo. Vamos assumir que o nome do arquivo é “entrada.txt”.with open('entrada.txt', 'r') as arquivo:
conteudo = arquivo.read()
Explicação: Aqui, usamos
with open(...) as ...
para garantir que o arquivo seja fechado automaticamente depois de lermos seu conteúdo. conteudo
agora tem todo o texto do arquivo.Passo 3
Agora, vamos converter todo o texto para minúsculas para garantir que não haja distinção entre letras maiúsculas e minúsculas. Usamos o método
lower()
da string para isso.conteudo = conteudo.lower()
Explicação: Isso facilita a contagem, já que ‘A’ e ‘a’ serão tratadas como a mesma letra.
Passo 4
Precisamos contar apenas as letras de ‘a’ a ‘z’. Vamos filtrar o conteúdo para remover qualquer caractere que não seja uma letra. Podemos usar uma list comprehension combinada com o método
isalpha()
para verificar se cada caractere é uma letra.letras = [char for char in conteudo if char.isalpha()]
Explicação: Aqui,
char.isalpha()
retorna True
se char
for uma letra (a-z ou A-Z), e char for char in conteudo
cria uma nova lista com apenas essas letras.Passo 5
Para contar a frequência de cada letra, vamos usar a classe
Counter
do módulo collections
, que facilita a contagem de elementos em uma lista.from collections import Counter
contagem = Counter(letras)
Explicação:
Counter
cria um dicionário onde as chaves são as letras e os valores são as contagens de cada letra.Passo 6
Agora, precisamos ordenar as letras pela frequência em ordem decrescente. O método
most_common()
do Counter
já faz isso para nós.letras_ordenadas = contagem.most_common()
Explicação:
most_common()
retorna uma lista de tuplas ordenadas do mais comum para o menos comum, por exemplo: [('a', 10), ('b', 8), ...]
.Passo 7
Finalmente, imprimimos as letras ordenadas pela frequência. Vamos imprimir apenas as letras, sem as contagens.
for letra, frequencia in letras_ordenadas:
print(letra)
Explicação: Isso vai mostrar cada letra na ordem da mais frequente para a menos frequente.
Passo 8
with open(‘entrada.txt’, ‘r’) as arquivo:
conteudo = arquivo.read()
conteudo = arquivo.read()
Passo 9
conteudo = conteudo.lower()
Passo 10
letras = [char for char in conteudo if char.isalpha()]
Passo 11
contagem = Counter(letras)
Passo 12
letras_ordenadas = contagem.most_common()
Passo 13
for letra, frequencia in letras_ordenadas:
print(letra)
print(letra)
*Observação:* Certifique-se de que o arquivo "entrada.txt" está no mesmo diretório do seu script Python quando você executá-lo. Esse programa vai ler o arquivo, contar quantas vezes cada letra aparece e imprimir as letras da mais frequente para a menos frequente.
Resposta
Aqui está o programa completo:
from collections import Counter