1
resposta

[Sugestão] Faça como eu fiz: juntando listas de produtos

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá, Alex. Como vai?

Que marca fantástica! Você chegou ao arquivo Alura ex035.py. Manter essa consistência ao longo de mais de 35 exercícios práticos no PyCharm é uma conquista admirável e mostra o quanto você está comprometido com a sua evolução na programação.

O seu código ficou excelente! Você resolveu o desafio utilizando uma das funções nativas mais elegantes e poderosas do Python para manipulação de coleções de dados: a função zip().

A sua estratégia no passo 2 foi perfeita. Ao usar .split(",") combinado com o .strip() dentro do List Comprehension, você limpou de forma inteligente os espaços vazios que o usuário digita após a vírgula (como em banana, pera). Isso garantiu que os textos fossem processados sem "ruídos". Na linha 10, o laço for produto, preco in zip(...) costurou as duas listas de forma impecável, associando cada fruta ao seu respectivo valor.

Para enriquecer ainda mais o seu aprendizado sobre estruturas de dados em Python, quero compartilhar uma explicação visual de como o zip() opera na memória, além de uma dica de segurança para evitar problemas em produção:


Como a função zip() funciona por trás dos panos

A analogia perfeita para entender a função zip() é pensar no zíper de uma jaqueta. O papel dele é pegar os dentes do lado esquerdo (Lista A) e encaixá-los perfeitamente, par por par, com os dentes do lado direito (Lista B).

Na execução do seu programa, o Python montou pares ordenados de tuplas na memória exatamente assim:

  • (lista_produtos[0], lista_precos[0]) $\rightarrow$ ("banana", "2.5")
  • (lista_produtos[1], lista_precos[1]) $\rightarrow$ ("pera", "4.5")
  • (lista_produtos[2], lista_precos[2]) $\rightarrow$ ("goiaba", "8.5")

Um ponto de atenção importante: O "Efeito Desigual" no zip()

O comportamento padrão da função zip() possui uma característica silenciosa que pode gerar bugs difíceis de rastrear em sistemas reais. Ele trabalha com base na menor lista fornecida.

Imagine o seguinte cenário: o usuário digita 3 produtos (banana, pera, goiaba), mas por distração digita apenas 2 preços (2.5, 4.5).

  • O que acontecerá? O Python criará os dois primeiros pares normalmente e ignorará completamente a goiaba, encerrando o programa sem exibir nenhum aviso de erro ou alerta.

Para blindar o seu código no mercado de trabalho e garantir que o programa avise se houver uma inconsistência de quantidade entre os itens e os preços, você pode fazer uma validação simples de tamanho usando a função len() antes de rodar o loop:

# Validação de segurança
if len(lista_produtos) != len(lista_precos):
    print("Erro: A quantidade de produtos e de preços não é a mesma!")
else:
    # Se os tamanhos forem iguais, roda o seu bloco original com segurança
    for produto, preco in zip(lista_produtos, lista_precos):
        print(f"{produto}: {preco}")

(Uma outra alternativa moderna nas versões atuais do Python é usar a propriedade strict=True dentro do próprio zip, da seguinte forma: zip(lista_produtos, lista_precos, strict=True). Isso força o Python a disparar um erro de máquina caso os tamanhos sejam desiguais).

Mais uma vez, parabéns pela dedicação exemplar, pela organização impecável dos seus comentários e pelo excelente ritmo de estudos. Você está construindo uma base sólida em Python!

Espero que possa ter lhe ajudado!