Olá, Giovanna! Como vai?
Entendo a sua preocupação, na teoria de Linguagens de Programação chamamos isso de um código verboso, pelo fato de usar repetidamente o replace
.
Seu código está funcional, mas pode ser melhorado em termos de legibilidade e eficiência. Uma forma mais elegante e flexível de fazer isso é utilizando o módulo re
(regular expressions ou regex), que permite remover todos os sinais de pontuação de uma vez. Dessa forma:
import re
entrada = input('Digite uma frase: ').lower()
# Remove pontuação usando regex e filtra palavras com 5 ou mais letras
palavras = filter(lambda p: len(p) >= 5, re.sub(r'[^\w\s]', '', entrada).split())
print(list(palavras))
r'[^\w\s]'
: seleciona tudo que não é uma letra (\w) ou espaço (\s).re.sub()
: substitui esses caracteres por uma string vazia.
Se quiser ir além, pode transformar o resultado em uma lista diretamente:
import re
entrada = input('Digite uma frase: ').lower()
palavras = [p for p in re.sub(r'[^\w\s]', '', entrada).split() if len(p) >= 5]
print(palavras)
Essa versão usa list comprehension, que é mais comum em Python moderno e geralmente mais performática que filter()
com lambda
.
Se quiser se aprofundar mais no uso de expressões regulares, recomendo:
Espero ter ajudado e fico à disposição se precisar.
Abraço e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado