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

[Projeto] Faça como eu fiz: gerador de funções personalizadas [Especialista IA]

#A função interna lembra o valor de porcentagem mesmo depois que criar_desconto termina de executar
def criar_desconto(porcentagem):
    def aplicar_desconto(valor):
        return valor * (1 - porcentagem / 100)
    return aplicar_desconto

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

desconto = criar_desconto(porcentagem)
preco_final = desconto(valor)

print(f"Preço final com desconto: {preco_final}")
1 resposta

Oi, Tamy. Tudo bem com você?

Obrigado por compartilhar sua solução para o exercício sobre gerador de funções personalizadas utilizando closures. Seu código atende ao que foi solicitado na atividade, criando uma função externa responsável por definir a porcentagem de desconto e uma função interna que utiliza esse valor posteriormente. Essa é justamente a principal característica de uma closure em Python: manter acesso às variáveis do escopo externo mesmo após o término da execução da função que as criou.

A leitura dos valores com float também foi uma boa escolha, permitindo trabalhar com descontos e preços que possuem casas decimais. Como exemplo, ao criar uma função com 10% de desconto, ela poderá ser reutilizada para calcular o preço final de diferentes compras, como 200, 350 ou 89.90, sem que seja necessário informar a porcentagem novamente. Esse tipo de abordagem é bastante útil quando uma mesma regra precisa ser aplicada diversas vezes.

Pensando em um cenário mais próximo de uma aplicação real, como você adaptaria essa closure para limitar o desconto máximo permitido, independentemente da porcentagem informada pelo usuário?

Parabéns pela dedicação e por compartilhar sua solução. Continue praticando e utilizando o fórum para trocar experiências e esclarecer dúvidas. Estamos à disposição para ajudar.

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