Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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:
zip() funciona por trás dos panosA 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")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).
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!