Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Faça como eu fiz: gerador de funções personalizadas

#Questão 09:Miguel está desenvolvendo um sistema de cupons de desconto e precisa de uma forma para aplicar diferentes taxas de desconto

# Função closure
def criar_desconto(percentual):
    def aplicar_desconto(valor):
        return valor - (valor * percentual / 100)
    return aplicar_desconto

# Entrada da porcentagem de desconto
desconto = float(input("Digite a porcentagem de desconto: ").replace(",", "."))

# Criar função com desconto fixo
calcular = criar_desconto(desconto)

# Entrada do valor da compra
valor_compra = float(input("Digite o valor da compra: ").replace(",", "."))

# Calcular preço final
preco_final = calcular(valor_compra)

# Exibir resultado
print(f"Preço final com desconto: {preco_final}")
2 respostas

Oi, estudante, como vai?

Sua solução ficou adequada para a proposta da atividade e demonstrou um bom entendimento sobre closures em Python. A função criar_desconto() foi utilizada corretamente para retornar outra função com o percentual já definido, o que atende exatamente ao objetivo do exercício. Além disso, a separação entre a criação da função e a aplicação do desconto deixou o código organizado e fácil de compreender.

Um ponto interessante foi o uso do .replace(",", ".") nas entradas. Isso melhora bastante a experiência de quem executa o programa, já que permite informar valores no padrão mais comum utilizado em português. Também ficou boa a escolha de trabalhar com float, já que descontos normalmente envolvem valores decimais.

Você já pensou em adaptar essa closure para aplicar diferentes regras, como desconto máximo permitido ou descontos progressivos conforme o valor da compra?

Parabéns pela resolução e obrigado por compartilhar sua resposta no fórum. Continue praticando e utilizando esse espaço para trocar conhecimento e aprimorar ainda mais sua lógica em Python.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!
solução!

Sim, acho que daria para adaptar tranquilo. Poderia colocar um limite máximo de desconto ou até criar faixas de desconto conforme o valor da compra. Acho legal porque a closure deixa essa lógica mais flexível sem precisar mudar o restante do código.