Acho que fiz errado
Refiz usando o cod que o prof deixa de ex
Acho que fiz errado
Refiz usando o cod que o prof deixa de ex
Olá, Estudante. Como vai?
Não se preocupe, o seu primeiro código não estava errado! Na verdade, a sua lógica inicial estava perfeitamente correta e executou o cálculo de maneira impecável, resultando nos 2767.5 esperados para um desconto de 25% sobre 3690.
O que muda entre a sua primeira versão e a versão do professor é apenas a estratégia de reaproveitamento do código. Você aplicou um conceito avançado do Python chamado Closure, que é quando uma função interna se lembra do escopo da função externa (no seu caso, lembrando do valor da porcentagem).
Para deixar bem clara a diferença de objetivos entre os dois códigos e valorizar o que você construiu, vamos analisar as abordagens:
No seu primeiro código, você preferiu deixar tudo dinâmico. O sistema pede a porcentagem ao usuário, cria a função personalizada naquele instante e logo em seguida pede o valor da compra.
O código do professor é estático no início porque ele usa a Closure como uma "fábrica de funções" pré-definidas no sistema.
Ao fazer desconto_10 = criar_desconto(10), ele deixa salvo no sistema uma função que só sabe aplicar 10% de desconto. Em sistemas reais, fazemos isso para deixar fixas as regras de negócio do aplicativo, por exemplo:
desconto_black_friday = criar_desconto(50)
desconto_cliente_vip = criar_desconto(15)
desconto_primeira_compra = criar_desconto(10)
Dessa forma, o restante do sistema só precisa chamar a função pronta desconto_cliente_vip(valor_compra) sem precisar perguntar toda hora qual é a porcentagem.
Uma evolução muito legal que você trouxe no segundo código foi a formatação das casas decimais na saída do print:
print(f"Valor com desconto: R$ {valor_final:.2f}")
O modificador :.2f é uma excelente prática em Python quando lidamos com dinheiro, pois força o programa a exibir sempre duas casas decimais após o ponto (mostrando R$ 3321.00 em vez de 3321.0), deixando o resultado muito mais amigável para o usuário.
Ambos os códigos mostram que você compreendeu o funcionamento das funções aninhadas e do retorno de funções em Python. Parabéns pelo empenho em testar as duas formas!
Espero que possa ter lhe ajudado!