Olá, Estudante. Como vai?
Que solução fantástica! Você foi muito além de um simples contador de caracteres tradicional. Ao importar o módulo string e utilizar a constante string.punctuation dentro de um laço, você criou um verdadeiro preprocessador de texto, limpando símbolos (como pontos, vírgulas e exclamações) antes de realizar a contagem.
A combinação do .replace() com o .split() ficou excelente, pois garante que o programa conte o comprimento real das palavras sem que as pontuações alterem o tamanho delas.
Para agregar ainda mais valor ao seu código e trazer sugestões de boas práticas baseadas no que você está estudando neste capítulo, podemos ajustar um detalhe estrutural importante: o escopo e a organização das funções.
No seu código atual, a função limpar_pontuacao faz a limpeza, mas o ato de separar as palavras e exibir a contagem com o len() foi feito solto no fluxo principal do programa. Pensando em modularização, o ideal é que toda a lógica de contagem também fique encapsulada.
Além disso, podemos fazer uma pequena otimização de performance: em textos muito grandes, fazer um laço for que passa por todas as pontuações possíveis do Python e roda o .replace() várias vezes pode deixar o programa lento. Uma alternativa extremamente rápida e elegante no Python para limpar textos é usar o método nativo .translate().
Veja esta sugestão de como reestruturar e modularizar o seu projeto:
import string
def analisar_comprimento_palavras(texto):
# Cria uma tabela de tradução que mapeia todas as pontuações para None (as remove)
tabela_limpeza = str.maketrans("", "", string.punctuation)
texto_limpo = texto.translate(tabela_limpeza)
# Divide o texto limpo em uma lista de palavras
palavras = texto_limpo.split()
# Retorna a lista de palavras prontas para o uso
return palavras
# --- Fluxo Principal do Programa ---
texto_digitado = input("Digite ou cole o seu texto aqui: ")
# Chamamos a função para obter a lista tratada
lista_de_palavras = analisar_comprimento_palavras(texto_digitado)
print("\n--- Contagem de Caracteres por Palavra ---")
for palavra in lista_de_palavras:
print(f"A palavra '{palavra}' tem {len(palavra)} caracteres.")
Note como o método texto.translate(str.maketrans("", "", string.punctuation)) substitui todo o seu laço for por uma única operação interna do Python, deixando o código incrivelmente rápido e limpo. Ao envelopar isso em analisar_comprimento_palavras, o seu código principal fica super organizado!
Parabéns pelo excelente uso da biblioteca string e pela criatividade na resolução do desafio.
Espero que possa ter lhe ajudado!