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()

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)

*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

Exercícios relacionados