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)

Passo 1

Beleza, vamos resolver esse exercício juntos! A gente precisa criar um procedimento chamado listarPromocoesCaros. Esse procedimento vai receber uma lista de produtos e vai mostrar todos os produtos que estão em promoção e que têm preço acima da média dos preços dos produtos que estão em promoção. Além disso, a lista final vai estar organizada em ordem alfabética pelo nome dos produtos. Para isso, vamos precisar entender como filtrar os produtos em promoção, calcular a média dos preços desses produtos e depois ordenar a lista resultante.

Passo 2

Primeiro, vamos identificar quais produtos estão em promoção. Isso significa que, dentro da lista de produtos, vamos selecionar apenas aqueles que têm a flag de promoção ativa. Pra fazer isso, vamos percorrer cada produto da lista e verificar se ele está em promoção.

Passo 3

Depois de filtrar os produtos em promoção, precisamos calcular a média dos preços desses produtos. A média é calculada somando todos os preços dos produtos em promoção e dividindo pelo número total desses produtos. A fórmula da média é:
éçú

Passo 4

Com a média calculada, vamos agora selecionar os produtos que têm preço acima dessa média. Ou seja, dentro dos produtos que estão em promoção, vamos pegar só aqueles cujo preço é maior que a média que acabamos de calcular.

Passo 5

Agora que temos os produtos em promoção e que são mais caros que a média, vamos organizar essa lista em ordem alfabética pelo nome dos produtos. Isso facilita na hora de visualizar e entender quais produtos se destacam.

Passo 6

Finalmente, vamos apresentar todos os dados desses produtos selecionados. Isso pode incluir informações como nome, preço, descrição e qualquer outro dado relevante que esteja cadastrado na lista de produtos.

Passo 7

produtos_promocao = [produto for produto in lista_produtos if produto[‘em_promocao’]]
# Verificar se existem produtos em promoção para evitar divisão por zero
if not produtos_promocao:
    print("Não há produtos em promoção.")
    return

Passo 8

total_preco = sum(produto[‘preco’] for produto in produtos_promocao)
quantidade = len(produtos_promocao)
media_preco = total_preco / quantidade

Passo 9

produtos_acima_media = [produto for produto in produtos_promocao if produto[‘preco’] > media_preco]

Passo 10

produtos_ordenados = sorted(produtos_acima_media, key=lambda x: x[‘nome’])

Passo 11

for produto in produtos_ordenados:
print(f"Nome: {produto[‘nome’]}, Preço: R${produto[‘preco’]:.2f}, Descrição: {produto[‘descricao’]}")

Resposta

def listarPromocoesCaros(lista_produtos):

Exercícios relacionados

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)
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)
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);
Crie um procedimento chamado apresentaProduto, que recebe como parâmetro um dicionário que representa o produto, e apresenta os dados do produto. O produto deve ser apresentado no seguinte formato ( 1,5 ponto):
Se o produto não estiver em promoção: Se o produto estiver em promoção:
Código: <CODIGO_BARRA> Código: <CODIGO_BARRA>
Nome do Produto: <NOME_PRODUTO> Nome do Produto: <NOME_PRODUTO>