Crie um procedimento chamado promoverProdutos que como receba como parametros uma lista de códigos de barra e a lista de produtos cadastrados. A função deve realizar seu processamento de modo que para cada codigo de barra existente na primeira lista, o campo de promoção do produto correspondente na lista de produtos existentes seja modificado para True, indicando que o mesmo passa a se encontrar em promoção. A função deve ainda retornar uma lista com os códigos de barra fornecidos na primeira lista, porém que não possuam produto correspondente na lista de estoque.( 2,0 pontos)

Passo 1

Beleza, pessoal! Vamos dar uma olhada no que a questão está pedindo. A gente precisa criar uma função chamada promoverProdutos que recebe duas listas: uma de códigos de barras e outra de produtos cadastrados. O objetivo é, para cada código de barra na primeira lista, encontrar o produto correspondente na lista de produtos e marcar esse produto como “em promoção” (promocao = True). Além disso, a função deve retornar uma lista com os códigos de barras que não têm um produto correspondente na lista de estoque. Para resolver isso, vamos precisar entender como manipular listas e dicionários em programação, além de usar estruturas de repetição e condição.

Passo 2

Primeiro, vamos pensar em como representar os produtos cadastrados. Normalmente, cada produto pode ser representado como um dicionário contendo várias informações, como o código de barras, nome, preço e o status de promoção. Por exemplo:
produto = {
    'codigo_barras': '1234567890123',
    'nome': 'Produto A',
    'preco': 29.99,
    'promocao': False
}
Aqui, o campo promocao inicialmente está como False, indicando que o produto não está em promoção.

Passo 3

Agora, vamos criar a função promoverProdutos. Ela vai receber duas listas: uma com códigos de barras e outra com produtos. O que precisamos fazer é percorrer cada código de barras da primeira lista e verificar se existe um produto com esse código na lista de produtos. Se existir, mudamos o campo promocao para True. Se não existir, adicionamos esse código a uma nova lista que vamos retornar no final.

Passo 4

Vamos usar um loop for para percorrer cada código de barras na primeira lista. Dentro desse loop, vamos usar outro loop para verificar cada produto na lista de produtos e encontrar aquele que tem o mesmo código de barras. Se encontrarmos, atualizamos a promoção. Se não, depois de verificar todos os produtos, adicionamos o código à lista de não encontrados.

Passo 5

Também precisamos criar uma lista para armazenar os códigos de barras que não têm um produto correspondente. Vamos chamar essa lista de codigos_nao_encontrados. Inicializamos ela vazia no começo da função.

Passo 6

Depois de percorrer todos os códigos de barras, retornamos a lista codigos_nao_encontrados. Assim, quem usar a função saberá quais códigos não correspondem a nenhum produto no estoque.

Passo 7

Vamos juntar tudo isso em uma função completa:
def promoverProdutos(lista_codigos, lista_produtos):
    codigos_nao_encontrados = []
    for codigo in lista_codigos:
        encontrado = False
        for produto in lista_produtos:
            if produto['codigo_barras'] == codigo:
                produto['promocao'] = True
                encontrado = True
                break
        if not encontrado:
            codigos_nao_encontrados.append(codigo)
    return codigos_nao_encontrados

Resposta

Prontinho! A função promoverProdutos está pronta. Ela atualiza os produtos em promoção e retorna os códigos que não foram encontrados no estoque.

Exemplo de Uso

Para ver como funciona, dá uma olhada neste exemplo:
# Lista de códigos de barras para promoção
codigos_promocao = ['1234567890123', '9876543210987', '5555555555555']

# Lista de produtos cadastrados
produtos = [
    {'codigo_barras': '1234567890123', 'nome': 'Produto A', 'preco': 29.99, 'promocao': False},
    {'codigo_barras': '1111111111111', 'nome': 'Produto B', 'preco': 19.99, 'promocao': False},
    {'codigo_barras': '9876543210987', 'nome': 'Produto C', 'preco': 39.99, 'promocao': False}
]

# Chamando a função
codigos_faltantes = promoverProdutos(codigos_promocao, produtos)

# Resultado
print("Produtos após promoção:", produtos)
print("Códigos não encontrados:", codigos_faltantes)
Saída:
Produtos após promoção: [
    {'codigo_barras': '1234567890123', 'nome': 'Produto A', 'preco': 29.99, 'promocao': True},
    {'codigo_barras': '1111111111111', 'nome': 'Produto B', 'preco': 19.99, 'promocao': False},
    {'codigo_barras': '9876543210987', 'nome': 'Produto C', 'preco': 39.99, 'promocao': True}
]
Códigos não encontrados: ['5555555555555']
Assim, os produtos A e C estão em promoção, e o código ‘5555555555555’ não foi encontrado no estoque.

Exercícios relacionados

Crie um procedimento chamado cadastrarProduto que recebe como parâmetro a lista de produtos cadastrados e que deve realizar o cadastro de um produto na lista estoque. Deve ser solicitado todos os dados do novo produto, porém não podem ser cadastrados produtos com o mesmo código de barra. Produtos novos devem ser cadastrados no final da lista estoque ( 1,5 ponto)
Dê um exemplo de um problema do mundo real que pode ser modelado como o problema do caixeiro viajante.
Crie um procedimento chamado listarPromocoesCaros que recebe como parâmetro a lista de produtos cadastrados e que deve apresentar todos os dados de produtos em promoção que estejam acima da média de preços dos produtos promocionais em ordem alfabética dos nomes do produtos ( 2,0 pontos)
Crie uma função chamada existeProduto que recebe como parâmetro um valor inteiro que representa um código de barras de um produto e a lista de produtos no estoque e retorna True se existir algum produto armazenado na lista estoque que possua o código de barras igual ao valor passado no argumento da função. Caso contrário, a função deve retornar o valor False ( 1,0 ponto);