Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

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

def criar_calculadora_desconto(porcentagem):
    """
    Função externa que recebe a porcentagem de desconto
    e retorna uma função interna para calcular o preço final.
    """
    def aplicar_desconto(valor):
        desconto = valor * (porcentagem / 100)
        return valor - desconto
    return aplicar_desconto



print("=== Sistema de Cupons de Desconto ===")

taxa = float(input("Digite a porcentagem de desconto: "))
valor_compra = float(input("Digite o valor da compra: "))


calculadora = criar_calculadora_desconto(taxa)

preco_final = calculadora(valor_compra)


print(f"Preço original: R$ {valor_compra:.2f}")
print(f"Desconto aplicado: {taxa}%")
print(f"Preço final: R$ {preco_final:.2f}")
1 resposta

Oi, Penha, como vai?

Seu código está correto e implementa perfeitamente o conceito de closure. A função interna mantém o acesso à variável da porcentagem de desconto mesmo após a execução da função externa. Como dica de boas práticas, você pode adicionar anotações de tipos nos parâmetros para tornar o código ainda mais legível. Por exemplo, definir que a porcentagem e o valor recebem tipos específicos ajuda no desenvolvimento de sistemas maiores.

Como você acha que essa estrutura de closure poderia ser adaptada se o sistema precisasse aplicar uma taxa fixa de entrega além do desconto?

Parabéns pelo excelente trabalho no exercício e por compartilhar sua solução conosco. O fórum continua à disposição para suas dúvidas e novos aprendizados.

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