1
resposta

[Dúvida] Palavras longas

def texto_um():
    texto_converter = input('Digite um texto: \n')
    texto_convertido = texto_converter.split()
    return texto_convertido
lista = texto_um()
print(lista)   


contador = {}
for p in lista:
    contador[p] = len(p)
print(contador)


lista_dez = [p for p in lista if len(p)>=10]
print(lista_dez)

if lista_dez:
    print(f'Palavras longas encontradas: {lista_dez}')
else:
    print('Nenhuma palavra longa foi encontrada no texto.')    
# 	

Quando vejo a resposta do instrutor sinto que estou complicando uma coisa que poderia ter sido feito de maneira muito mais simples. Estou seguindo muito errado as propostas dos exercícios?

1 resposta

Oii, Everaldo. Tudo bem?

É muito comum sentir que estamos complicando o código no início. Na verdade, esse sentimento é um ótimo sinal: mostra que você já consegue resolver o problema e agora está começando a refinar sua percepção sobre como deixar a lógica mais direta.

Não existe um "caminho errado" quando o código entrega o que foi pedido, mas existem formas de tornar o fluxo mais natural.

Analisando sua abordagem:

Você utilizou conceitos muito interessantes, como list comprehension e dicionários. Mas, para este desafio específico, alguns passos acabaram gerando um trabalho extra para o computador que não era necessário para o resultado final:

  1. Uso de dicionários: Você criou um dicionário chamado contador para guardar o tamanho de cada palavra. Como o objetivo era apenas filtrar as palavras longas, você pode fazer essa verificação de tamanho (len(p)) diretamente dentro da lista, sem precisar armazenar esses valores antes.
  2. Modularização: Criar a função texto_um foi um bom exercício de organização, mas como ela apenas encapsula um input e um split, em scripts pequenos ela pode acabar deixando o código mais extenso sem necessidade.

O que você pode simplificar:

A ideia principal é tentar fazer o dado "fluir" do início ao fim com o menor número de paradas possíveis.

  • Seu código: Recebe texto -> Transforma em lista -> Cria dicionário de tamanhos -> Filtra para nova lista -> Exibe.
  • Caminho sugerido: Recebe texto -> Filtra as palavras com len > 10 durante a criação da lista -> Exibe.

Sua utilização de List Comprehension foi excelente:

lista_dez = [p for p in lista if len(p) > 10]

Esse recurso é bem Pythonico e já resume bem o que o exercício pedia.

Programar é um processo de tradução. Antes de escrever o código, tente pensar nos passos em voz alta. Se você disser "Vou contar o tamanho de cada palavra, guardar em uma tabela e depois olhar a tabela", você usará um dicionário. Se disser "Vou olhar cada palavra e, se for grande, coloco na lista", você usará apenas o filtro.

Você está no caminho certo e dominar essas ferramentas agora permitirá que você resolva problemas muito maiores no futuro.

Conteúdos relacionados
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!