1
resposta

Desafio: hora da prática

  1. Você iniciou um estágio em uma empresa que trabalha com processamento de linguagem natural (NLP). Sua líder requisitou que você criasse um trecho de código que recebe uma frase digitada pela pessoa usuária e filtre apenas as palavras com tamanho maior ou igual a 5, exibindo-as em uma lista. Essa demanda é voltada para a análise do padrão de comportamento de pessoas na escrita de palavras acima dessa quantidade de caracteres.
    Dica: utilize as funções lambda e filter() para filtrar essas palavras. Lembrando que a função embutida filter() recebe uma função (no nosso exemplo uma função lambda) e filtra um iterável de acordo com a função. Para tratar a frase use replace() para trocar a ',' '.', '!' e '?' por espaço.

Use a frase "Aprender Python aqui na Alura é muito bom" para testar o código.
RESPOSTA:
#Frase para teste
frase = "Aprender Python aqui na Alura é muito bom"

#Tratando a frase
frase = frase.replace(",", " ")
frase = frase.replace(".", " ")
frase = frase.replace("!", " ")
frase = frase.replace("?", " ")

#Separando as palavras
palavras = frase.split()

#Filtrando palavras com 5 ou mais caracteres
palavras_filtradas = list(filter(lambda palavra: len(palavra) >= 5, palavras))

#Saída
print(palavras_filtradas)

1 resposta

Olá, Weydison. Como vai?

Parabéns pela resolução perfeita do desafio! É muito bacana ver você avançando pelos conceitos de funções e manipulação de listas em Python, estruturando um script limpo, funcional e que atende 100% dos requisitos solicitados pela sua líder de estágio.

A sua estratégia de tratamento de texto ficou excelente. Ir substituindo as pontuações por espaço com o método .replace() evita que caracteres como uma vírgula ou um ponto final fiquem "grudados" na palavra, o que alteraria falsamente a contagem do tamanho dela. O uso do .split() para fatiar a frase e a combinação do list(filter(lambda ...)) na linha de filtragem demonstraram uma ótima maturidade em programação funcional.

O resultado impresso no terminal com a frase do teste trará exatamente as palavras desejadas: ['Aprender', 'Python', 'Alura', 'muito']. Todas elas com 5 ou mais caracteres!

Para enriquecer a sua bagagem técnica para o seu estágio em Processamento de Linguagem Natural (NLP), quero compartilhar duas dicas profissionais de refatoração e otimização de performance:


1. Refatorando o Tratamento de Texto (Clean Code)

O seu bloco de substituições repetidas com .replace() funciona perfeitamente para esse cenário controlado. Porém, no mundo real do NLP, os textos brutos (corpora) vêm com dezenas de pontuações e símbolos diferentes. Fazer uma linha para cada caractere deixaria o código gigantesco.

Uma prática de mercado muito elegante é usar um laço for simples para iterar sobre uma string contendo todas as pontuações indesejadas, limpando a frase em poucas linhas:

frase = "Aprender Python aqui na Alura é muito bom"

# Limpa todas as pontuações mapeadas em um loop compacto
for caractere in ",.!?;:":
    frase = frase.replace(caractere, " ")

palavras = frase.split()

(Nota de engenharia: Em projetos de NLP em larga escala, os desenvolvedores costumam usar Expressões Regulares através da biblioteca nativa re, com o comando re.sub(r'[.,!?]', ' ', frase), que faz toda essa varredura de uma só vez na velocidade da luz).


2. Substituindo filter por List Comprehension

Como conversamos em tópicos anteriores aqui na comunidade, o ecossistema Python adora as estruturas de List Comprehension (Compreensão de Lista). Embora o uso do filter() com a função lambda esteja impecável, na maioria das empresas de tecnologia os programadores preferem legibilidade no estilo "pythonico".

Veja como a sua linha de filtragem ganharia uma leitura super natural:

# Lê-se: guarde a palavra para cada palavra na lista SE o tamanho da palavra for >= 5
palavras_filtradas = [palabra for palabra in palavras if len(palabra) >= 5]

Essa abordagem, além de dispensar o uso da palavra-chave lambda e a conversão explícita para list(), costuma ter uma performance de processamento ligeiramente superior no interpretador do Python.


Você organizou muito bem o código e comentou cada etapa com precisão, o que é uma qualidade gigante para quem está estagiando e trabalhando em equipe. Continue com essa dedicação fantástica!

Espero que possa ter lhe ajudado!