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

Gerador de funções personalizadas

def criar_calculadora_desconto(porcentagem):
    """Esta é a função externa que configura o cupom de desconto."""
    
    def aplicar_desconto(valor_compra):
        """Esta é a closure que 'lembra' da porcentagem definida acima."""
        desconto = valor_compra * (porcentagem / 100)
        preco_final = valor_compra - desconto
        return preco_final
    
    return aplicar_desconto


# --- Simulando a Entrada do Usuário ---

# 1. O usuário define o cupom (Ex: 10%)
porcentagem_input = float(input("Digite a porcentagem de desconto: "))
# Aqui a closure é criada "parcialmente cheia" com os 10%
calcular_meu_cupom = criar_calculadora_desconto(porcentagem_input)

# 2. O usuário insere o valor da compra (Ex: 200)
valor_input = float(input("Digite o valor da compra: "))

# 3. A closure calcula o valor final
resultado = calcular_meu_cupom(valor_input)

print(f"Preço final com desconto: R$ {resultado:.2f}")
1 resposta

Oi, Deivide, como vai?

Seu código atende corretamente ao desafio e aplica o conceito de closure de forma adequada. A função interna consegue acessar a variável porcentagem definida na função externa, mantendo esse valor disponível mesmo após a execução da função principal.

Além disso, a separação entre a criação do cupom e a aplicação do desconto demonstra uma boa compreensão do objetivo do exercício. O cálculo do desconto e a formatação da saída também estão consistentes com o resultado esperado.

Uma possibilidade de evolução seria adicionar validações para impedir porcentagens negativas ou superiores a 100%. Como você implementaria esse tratamento mantendo a estrutura da closure?

Parabéns pela resolução da atividade e por compartilhar seu código. O fórum está à disposição para acompanhar sua evolução nos estudos e nas práticas com Python.

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