Miguel está desenvolvendo um sistema de cupons de desconto e precisa de uma forma para aplicar diferentes taxas de desconto sobre os valores das compras. Diante deste problema, crie uma closure que gere uma função capaz de calcular o preço final com um desconto fixo definido pelo usuário.
Exemplo de entrada:
Digite a porcentagem de desconto: 10
Digite o valor da compra: 200
def criar_desconto(taxa):
def aplicar_desconto(codigo, produtos):
if codigo in produtos:
produto = produtos[codigo]["nome"]
preco = produtos[codigo]["preco"]
valor_desconto = preco * taxa
preco_final = preco - valor_desconto
print(f'Código: {codigo}')
print(f'Produto: {produto}')
print(f'Valor original: R$ {preco:.2f}')
print(f'Desconto aplicado: R$ {valor_desconto:.2f}')
print(f'Valor final: R$ {preco_final:.2f}')
return preco_final
else:
print("Código inválido. Produto não encontrado.")
return 0
return aplicar_desconto
produtos = {
"001": {"nome": "Camisa de seda preta de mangas longas", "preco": 100},
"002": {"nome": "Minissaia xadrez", "preco": 200},
"003": {"nome": "Calça de sarja caqui", "preco": 150},
"004": {"nome": "Blazer azul marinho", "preco": 350}
}
desconto_10 = criar_desconto(0.10)
desconto_25 = criar_desconto(0.25)
total = 0
while True:
codigo = input("Digite o código do produto (ou 'fim' para encerrar): ")
if codigo.lower() == "fim":
break
if codigo in produtos:
preco = produtos[codigo]["preco"]
if preco >= 200:
total += desconto_25(codigo, produtos)
else:
total += desconto_10(codigo, produtos)
else:
print("Código inválido. Tente novamente.")
print("==============================")
print(f'Valor total da compra: R$ {total:.2f}')
print("==============================")
Digite o código do produto (ou 'fim' para encerrar): 001
Código: 001
Produto: Camisa de seda preta de mangas longas
Valor original: R$ 100.00
Desconto aplicado: R$ 10.00
Valor final: R$ 90.00
Digite o código do produto (ou 'fim' para encerrar): 004
Código: 004
Produto: Blazer azul marinho
Valor original: R$ 350.00
Desconto aplicado: R$ 87.50
Valor final: R$ 262.50
Digite o código do produto (ou 'fim' para encerrar): fim
==============================
Valor total da compra: R$ 352.50
==============================