Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] Faça como eu fiz: juntando listas de produtos

lista_produtos = input('Digite os produtos separados por vírgula: ').split(',') #lista de strings separa e converte pra lista de string
lista_precos = input('Digite os preços separados por vírgula: ').split(',')
lista_produtos_precos = zip(lista_produtos, lista_precos) #junta as duas listas em uma lista de tuplas

for produto, preco in lista_produtos_precos:
  print(f'{produto.strip()}: {preco.strip()}\n')
2 respostas
solução!

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!

Excelente feedback, gostei da validação das listas.