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!