Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Gerador de funções personalizadas

import os

def definir_desconto(porcentagem):
    def calcular_desconto(valor):
        return valor - ((valor * porcentagem)/100)
    return calcular_desconto

def tratar_erro(mensagem):
    input(f"{mensagem} Aperte qualquer tecla para continuar ")
    main()

def main():
    os.system("cls")
    try:
        desconto = float(input("Digite a porcentagem de desconto: "))
        valor = float(input("Digite o valor da compra: "))
    except:
        tratar_erro("Os dados informados são inválidos.")
    else:
        calcular_desconto = definir_desconto(desconto)
        print(f"Preço final com desconto: {calcular_desconto(valor)}")

if __name__ == "__main__":
    main()
1 resposta
solução!

Olá, Christian, como vai?

O código apresentado atende corretamente à proposta da atividade e aplica bem o conceito de closure ao retornar uma função que mantém a porcentagem de desconto no escopo. A lógica está clara, funcional e o cálculo do valor final ocorre conforme o esperado para diferentes entradas.

Obrigado por compartilhar sua solução. Continue trazendo suas atividades e dúvidas, o fórum segue à disposição para apoiar seu aprendizado.

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