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

Compartilhando minha solução para o exercício usando closure

desconto = float(input('Digite a porcentagem do desconto: '))
produto = float(input('Digite o valor da compra: '))

def calcular_des(fator):
  
  def aplicar_des(numero):
    return (fator / 100) * numero
  
  return aplicar_des

compra = calcular_des(desconto)
print('preço final com desconto: ', compra(produto))
1 resposta

Oi, André. Tudo bem com você?

Obrigado por compartilhar sua solução para o exercício sobre closure. Você aplicou corretamente o conceito principal da atividade ao criar uma função interna (aplicar_des) que utiliza o valor de fator definido na função externa (calcular_des). Isso demonstra que você compreendeu como uma closure consegue manter acesso às variáveis do escopo onde foi criada, mesmo após a execução da função externa ter terminado.

Há apenas um detalhe importante em relação ao resultado esperado da atividade. Atualmente, a função interna está calculando apenas o valor do desconto sobre o produto, e não o preço final com desconto. Por exemplo, para um produto de 200 reais com desconto de 10%, sua função retorna 20, que corresponde ao valor descontado. A proposta do exercício solicita o preço final da compra, que nesse caso seria 180.

Fora esse ajuste na lógica do cálculo, a utilização da closure está correta e segue exatamente a ideia apresentada no conteúdo.

Como exercício complementar, como você adaptaria essa mesma closure para permitir tanto descontos quanto acréscimos percentuais utilizando a mesma estrutura?

Parabéns pela implementação e por compartilhar seu raciocínio no fórum. Continue trazendo suas soluções e experimentando diferentes abordagens. O fórum está à disposição para novas dúvidas e discussões.

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