Escreva um programa que lê um arquivo chamado texto.txt e imprime na tela a palavra do arquivo com o maior número de caracteres e a quantidade de caracteres dessa palavra.
Passo 1
O enunciado pede que o programa leia um arquivo chamado texto.txt e imprima na tela:
- a palavra do arquivo que tem o maior número de caracteres, e
- a quantidade de caracteres dessa palavra.
Informações e condições dadas:
- O arquivo tem o nome exatamente “texto.txt”.
- É preciso exibir duas coisas: a própria palavra mais longa e o número de caracteres dessa palavra.
- Não foi especificado o formato de saída (uma linha, duas linhas, etc.) — vou optar por imprimir a palavra seguida do número separados por um espaço, que é simples e direto.
- Não foi dito o que considerar como “palavra” quando há pontuação; vou tratar “palavra” como uma sequência de caracteres alfanuméricos (ou seja, extrair palavras ignorando pontuação). Se o arquivo estiver vazio ou sem tokens de palavra, o programa tratará esse caso de forma explícita.
Passo 2
Escolha do método e da linguagem:
- Vou usar Python porque é simples, muito usado em provas/EPs, e permite fazer a tarefa com poucas linhas e com clareza.
- Método geral:
- Abrir o arquivo “texto.txt” e ler todo o texto.
- Extrair as palavras do texto (removendo pontuação) — faça-se isso com uma expressão regular que capture sequências de caracteres de palavra.
- Percorrer a lista de palavras e manter a palavra mais longa encontrada (e o seu tamanho).
- Imprimir o resultado.
Por que esse método?
- Ler o arquivo e extrair tokens é a forma direta de obter “palavras”.
- Usar expressão regular evita problemas com pontuação (por ex.: “casa,” ou “fim.” não contam a vírgula/ponto como parte da palavra).
- Percorrer a lista e comparar comprimentos é um método básico, manual e fácil de explicar (não exige truques avançados).
Passo 3
Como ler um arquivo em Python (explicação detalhada):
- Em Python, a forma recomendada é usar um gerenciador de contexto “with” que abre o arquivo e garante fechamento automático.
- Exemplo de leitura inteira do arquivo como string:
- with open(“texto.txt”, “r”, encoding=“utf-8”) as f:
-
texto = f.read()
- O parâmetro “encoding” evita problemas com acentos em muitos ambientes (usar “utf-8” é a prática comum).
- Depois de executada a leitura, a variável texto conterá todo o conteúdo do arquivo como uma única string.
Passo 4
Como extrair palavras (explicação das expressões regulares usadas):
- Expressões regulares (módulo re) permitem encontrar padrões dentro de texto.
- Padrão que vamos usar: r"\b\w+\b"
- \b : borda de palavra (começo ou fim de uma palavra).
- \w : caractere de palavra (em Python, com suporte a Unicode, inclui letras, dígitos e underscore).
-
- : um ou mais do elemento anterior (ou seja, sequências de um ou mais caracteres de palavra).
- Recomendação: usar re.findall(r"\b\w+\b", texto, flags=re.UNICODE) para obter uma lista com todas as ocorrências.
- Observações:
- Esse padrão considera “palavra” como sequência de caracteres alfanuméricos e underscore. Em muitas línguas, isso inclui letras acentuadas no Python moderno.
- Alternativa mais restritiva seria aceitar somente letras (por exemplo, para eliminar números), mas r"\b\w+\b" é mais geral e costuma ser suficiente.
Passo 5
Como encontrar a palavra mais longa (algoritmo passo a passo):
- Se tivermos a lista de palavras em uma variável chamada words (por exemplo), podemos fazer:
- Inicializar duas variáveis: longest_word = “” (string vazia) e longest_len = 0.
- Para cada palavra w em words:
- calcular tamanho com len(w).
- se len(w) > longest_len então:
- atualizar longest_len = len(w)
- atualizar longest_word = w
- Ao final do loop, longest_word contém a primeira palavra com maior comprimento encontrada e longest_len contém esse comprimento.
- Por que esse método? É explícito, fácil de entender e não usa funcionalidades avançadas (como chave em max), então é ótimo para prova/recuperação rápida.
Passo 6
Casos especiais e tratamento de erros:
- Se o arquivo não existir: o programa deve avisar o usuário (tratamento de exceção).
- Se não houver palavras encontradas (arquivo vazio ou só pontuação): o programa pode imprimir uma saída clara. Nesta solução vou optar por não imprimir a palavra (string vazia) seguida de 0 — mas para ser explícito no terminal vou imprimir apenas “0” ao final (ou você pode adaptar para imprimir uma mensagem mais descritiva). No código que segue vou imprimir nada para a palavra e 0 para o tamanho, isto é, uma saída do tipo:
palavra_com_mais_caracteres<espaço>tamanho
(quando palavra for vazia, ficará apenas um espaço antes do número).
Passo 7
Resumo do que o programa fará, linha a linha (sem mostrar o código final aqui):
- Importar módulo re.
- Tentar abrir “texto.txt” com encoding “utf-8”.
- Ler todo o conteúdo para a variável texto.
- Usar re.findall para obter a lista words.
- Inicializar longest_word e longest_len.
- Fazer um loop por words atualizando o máximo quando necessário.
- Imprimir na tela a palavra e o tamanho separados por espaço.
- Tratar FileNotFoundError imprimindo mensagem de erro apropriada.
Resposta
#!/usr/bin/env python3
# Programa: encontra a palavra mais longa em texto.txt e imprime a palavra e seu tamanho
import re
import sys
try:
with open("texto.txt", "r", encoding="utf-8") as f:
texto = f.read()
except FileNotFoundError:
print("Arquivo 'texto.txt' não encontrado.", file=sys.stderr)
sys.exit(1)
# Extrai palavras como sequências de caracteres de palavra (Unicode aware)
words = re.findall(r"\b\w+\b", texto, flags=re.UNICODE)
# Encontrar a palavra mais longa (primeira ocorrência em caso de empate)
longest_word = ""
longest_len = 0
for w in words:
lw = len(w)
if lw > longest_len:
longest_len = lw
longest_word = w
# Imprime: palavra seguida do tamanho (se não houver palavra, imprime espaço e 0)
print(longest_word, longest_len)