Olá, Marcelo. Como vai?
Excelente código! O uso da função built-in zip() é a forma mais idiomática e performática do Python para resolver o problema de combinar duas ou mais coleções sequenciais (como listas) em uma única estrutura de tuplas emparelhadas.
A sua sacada de aplicar o método .strip() dentro do print() também foi ótima, pois evita que espaços em branco acidentais digitados pelo usuário (como " arroz ") estraguem a formatação visual do resultado no console.
Para complementar o seu projeto e agregar ainda mais valor, vamos analisar de perto o comportamento do zip() e uma boa prática de mercado quando lidamos com conversão de tipos em Data Science ou Desenvolvimento Web.
Como o zip() funciona por debaixo dos panos?
Imagine que as suas listas de produtos e preços correm em paralelo. O zip() atua como um zíper de jaqueta, unindo o elemento do índice 0 da primeira lista com o elemento do índice 0 da segunda lista, gerando tuplas estruturadas:
No entanto, há um comportamento do zip() que todo programador Python precisa conhecer: ele para de combinar assim que a menor lista chegar ao fim. Se o usuário digitar 3 produtos, mas apenas 2 preços, o terceiro produto será completamente ignorado na exibição, sem disparar nenhum erro na tela.
Sugestão de Melhoria: Tratamento de Tipos e Exceções
No seu código atual, os preços obtidos pelo input().split(',') são tratados puramente como texto (strings). Em um sistema real, para fazermos cálculos posteriores (como somar o total dos produtos ou aplicar um desconto), precisamos converter esses valores para o tipo numérico decimal (float).
Podemos evoluir o seu código adicionando um bloco try/except para garantir que o usuário digitou a mesma quantidade de itens e que os preços são numéricos válidos. Veja essa implementação mais robusta:
lista_produtos = input('Digite os produtos separados por vírgula: ').split(',')
lista_precos = input('Digite os preços separados por vírgula: ').split(',')
# Validação importante: garantir que as duas listas possuem o mesmo tamanho
if len(lista_produtos) != len(lista_precos):
print("Erro: A quantidade de produtos e de preços informados deve ser a mesma.")
else:
print("\n--- Lista de Produtos e Preços ---")
# Combinamos as listas com o zip()
lista_produtos_precos = zip(lista_produtos, lista_precos)
for produto, preco in lista_produtos_precos:
try:
# Convertemos o preço para float antes de exibir
preco_num = float(preco.strip())
print(f'{produto.strip()}: R$ {preco_num:.2f}')
except ValueError:
print(f'Erro: O preço indicado para "{produto.strip()}" não é um número válido.')
Com essa modificação, seu script deixa de ser apenas um formatador de texto e passa a tratar os dados de forma correta e segura para operações financeiras.
Seu domínio das funções nativas do Python está excelente. Continue compartilhando seus códigos e evoluindo nas atividades!
Espero que possa ter lhe ajudado!