1
resposta

[Sugestão] Faça como eu fiz: gerador de funções personalizadas

def criador_de_desconto(porcentagem):
    """Esta é a fábrica de closures."""
    def aplicar(preco):
        valor_desconto = preco * (porcentagem / 100)
        return preco - valor_desconto, porcentagem
    return aplicar

# --- Geramos as regras uma única vez (Memória do Sistema) ---
regras = {
    "faixa1": criador_de_desconto(5),
    "faixa2": criador_de_desconto(10),
    "faixa3": criador_de_desconto(15),
    "faixa4": criador_de_desconto(20),
    "faixa5": criador_de_desconto(25),
    "faixa6": criador_de_desconto(30)
}

def obter_regra(preco):
    """Seleciona a closure correta baseada no preço digitado."""
    if preco <= 200:   return regras["faixa1"]
    if preco <= 400:   return regras["faixa2"]
    if preco <= 800:   return regras["faixa3"]
    if preco <= 1600:  return regras["faixa4"]
    if preco <= 3200:  return regras["faixa5"]
    return regras["faixa6"]

# --- Interação com o Usuário ---
try:
    valor_digitado = float(input("Digite o valor do produto: R$ "))
    
    # Buscamos a closure específica para esse preço
    calculadora = obter_regra(valor_digitado)
    
    # Executamos a closure (ela já sabe qual % aplicar internamente)
    valor_final, porcentagem_usada = calculadora(valor_digitado)

    print(f"\nResultado:")
    print(f"Valor Original: R$ {valor_digitado:.2f}")
    print(f"Regra aplicada: {porcentagem_usada}% de desconto")
    print(f"Valor Final:    R$ {valor_final:.2f}")

except ValueError:
    print("Erro: Por favor, digite um número válido (ex: 1500.50).")
1 resposta

Olá, Marinaldo, como vai?

Sua implementação demonstra um bom domínio de closures. A função criador_de_desconto está correta conceitualmente, pois a função interna aplicar mantém acesso à variável porcentagem, caracterizando bem o uso de escopo léxico. A organização em uma estrutura de regras também mostra uma evolução além do enunciado original.

Continue compartilhando suas implementações no fórum para enriquecer as discussões. O fórum está à disposição.

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