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:
    1. Abrir o arquivo “texto.txt” e ler todo o texto.
    2. 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.
    3. Percorrer a lista de palavras e manter a palavra mais longa encontrada (e o seu tamanho).
    4. 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:
    1. Inicializar duas variáveis: longest_word = “” (string vazia) e longest_len = 0.
    2. 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
    3. 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)

Exercícios relacionados