Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

2 Resoluções possíveis

Primeira resolução, transformando as listas no iterável dicionário:

def listas_p_dicionario(produtos, precos):
    dicionario = dict(zip(produtos, map(float, precos)))
    return dicionario
    
produtos = input("Digite os produtos: ").split(", ")
precos = input("Digite os preços: ").split(", ")

for produto, preco in listas_p_dicionario(produtos, precos).items():
    print(f"{produto} | R$ {preco:.2f}")

Segunda resolução, transformando as listas no iterador zip:

def listas_p_zip(produtos, precos):
    iterador_zip = zip(produtos, map(float, precos))
    return iterador_zip
    
produtos = input("Digite os produtos: ").split(", ")
precos = input("Digite os preços: ").split(", ")

for produto, preco in listas_p_zip(produtos, precos):
    print(f"{produto} | R$ {preco:.2f}")
1 resposta
solução!

Oii Paulo, tudo bem?

Obrigada por compartilhar suas duas resoluções no fórum — elas ilustram bem uma escolha de design bastante comum em Python: retornar um dict (já materializado na memória) versus retornar um iterador zip (avaliado sob demanda).

Vale destacar algumas diferenças práticas entre as duas abordagens:

  • Dicionário: permite acesso por chave (dicionario["maçã"]), verificar se um produto existe com in, e reutilizar o resultado várias vezes sem "consumir" o objeto.
  • Iterador zip: mais eficiente para listas muito grandes, pois não cria uma estrutura completa na memória. A contrapartida é que, após percorrê-lo uma vez no for, ele fica esgotado — uma segunda iteração retornaria vazio.

Uma observação pequena: como o enunciado pede o formato produto: preço, o f-string ficaria f"{produto}: {preco:.2f}" em vez de f"{produto} | R$ {preco:.2f}". Nada que comprometa a lógica, só para ficar alinhado com o esperado pela atividade.

Conte com a Alura para evoluir seus estudos. Em caso de dúvidas, fico à disposição.

Bons estudos!

Sucesso

Imagem da comunidade