Oi, Julia! Como vai?
Trabalhar com um gerador como o generate_discount_function é uma ótima forma de explorar funções aninhadas em Python, e você fez isso de maneira muito clara.
A lógica que você criou é bem elegante. A função externa recebe discount_percentage como parâmetro e retorna a função interna apply_discount, que usa purchase_value para calcular o discount_amount e chegar ao final_price. Esse padrão é chamado de closure e permite criar comportamentos reutilizáveis e flexíveis, adaptando o desconto conforme necessário sem repetir código.
Outro ponto positivo é o uso de float combinado com input para capturar os valores digitados pelo usuário, garantindo que os cálculos sejam feitos com precisão. A variável percentage_discount recebe esse valor e alimenta toda a lógica da discount_function gerada.
Uma dica para deixar o resultado ainda mais apresentável é usar a função round() para controlar as casas decimais do final_price. Veja o exemplo:
final_price = round(discount_function(purchase_value), 2)
print(f"Preco final com desconto: {final_price}")
Assim, os valores exibidos ficam no formato esperado para aplicações financeiras, com apenas duas casas decimais.
Continue explorando esse conceito, pois closures e funções de ordem superior são recursos muito poderosos no dia a dia de quem programa em Python.
Que outros tipos de geradores de funções você acha que poderiam ser úteis em projetos reais?
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!