1
resposta

Prática - Juntando listas de produtos

def combinar_listas(produtos_str, precos_str):
    # Divide as strings em listas
    produtos = [p.strip() for p in produtos_str.split(",")]
    precos = [float(p.strip()) for p in precos_str.split(",")]

    # Usa zip para combinar produto e preço
    combinacao = dict(zip(produtos, precos))
    return combinacao

# Exemplo de uso:
produtos_input = input("Digite os produtos separados por vírgula: ")
precos_input = input("Digite os preços separados por vírgula: ")

resultado = combinar_listas(produtos_input, precos_input)

# Exibe no formato produto: preço
for produto, preco in resultado.items():
    print(f"{produto}: {preco}")

Entrada:

Digite os produtos separados por vírgula: maçã, banana, pera
Digite os preços separados por vírgula: 2.5, 1.2, 3.0

Saída:

maçã: 2.5
banana: 1.2
pera: 3.0
1 resposta

Olá, Aristóteles. Como vai?

Parabéns por mais uma excelente resolução de desafio no fórum! O seu código está sensacional, muito bem estruturado e demonstra que você já tem total clareza sobre como manipular e estruturar diferentes tipos de coleções em Python.

O grande destaque do seu script foi o uso da função nativa zip(). No mercado de desenvolvimento, o zip() é considerado a ferramenta padrão ouro quando precisamos parear elementos de duas ou mais sequências diferentes que possuem o mesmo tamanho. Unir isso com a função dict() para transformar o resultado diretamente em um dicionário foi uma sacada cirúrgica, pois os dicionários são as estruturas de dados ideais para armazenar relações de chave-valor (como o par produto: preço).

Vamos analisar as ótimas práticas que você aplicou na sua função:

  • O método .strip() nas Compreensões de Lista: Adicionar o .strip() dentro dos laços internos ([p.strip() for p in ...]) foi uma escolha excelente. Como o usuário pode digitar espaços por engano após a vírgula (ex: "maçã, banana"), o .strip() limpa esses espaços invisíveis antes e depois do texto, evitando que as chaves do seu dicionário fiquem com nomes como " banana" (com um espaço antes).
  • O método .items() no laço final: Usar o .items() para desempacotar a chave e o valor simultaneamente no laço for produto, preco in resultado.items(): é a maneira mais legível e performática de percorrer um dicionário em Python.

Como sugestão de aprofundamento e boa prática de segurança para cenários reais: o que aconteceria se o usuário digitasse 3 produtos, mas esquecesse de digitar o preço do último, inserindo apenas 2 preços?

Por padrão, a função zip() combina os elementos até chegar ao fim da menor lista e ignora o resto de forma silenciosa. No caso citado, o terceiro produto sumiria do resultado final sem nenhum aviso.

Para lidar com isso e evitar inconsistência de dados no mercado de trabalho, existem duas abordagens comuns:

1. Validar o tamanho das listas antes (Garantia de consistência)

Você pode adicionar uma condicional simples para checar se a quantidade de itens bate antes de fazer a combinação:

def combinar_listas(produtos_str, precos_str):
    produtos = [p.strip() for p in produtos_str.split(",")]
    precos = [float(p.strip()) for p in precos_str.split(",")]

    if len(produtos) != len(precos):
        print("Erro: A quantidade de produtos e preços deve ser a mesma!")
        return {}

    return dict(zip(produtos, precos))

2. Usar o zip_longest() (Preenchimento de valores ausentes)

Se o seu objetivo for aceitar que faltem dados e preencher o preço vazio com um valor padrão (como 0.0), o Python possui uma biblioteca nativa chamada itertools que traz a função zip_longest:

from itertools import zip_longest

def combinar_listas(produtos_str, precos_str):
    produtos = [p.strip() for p in produtos_str.split(",")]
    precos = [float(p.strip()) for p in precos_str.split(",")]

    # Se faltar preço, ele assume automaticamente 0.0 para o produto restante
    return dict(zip_longest(produtos, precos, fillvalue=0.0))

O seu código original cumpre perfeitamente o objetivo pedagógico proposto na atividade e está com uma escrita impecável. Continue mantendo essa consistência e esse altíssimo nível nos seus estudos de Python!

Espero que possa ter lhe ajudado!