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

Calculadora com Lambda

Nesta atividade, estou aprendendo a utilizar funções lambda para executar operações simples de forma rápida e objetiva. Também estou aprendendo a organizar funções em um dicionário, permitindo que o sistema escolha automaticamente qual regra aplicar.

O conceito central é:

Receber uma operação
↓
Selecionar a regra correspondente
↓
Executar o cálculo
↓
Retornar o resultado

Solução da atividade da Alura

soma = lambda x, y: x + y

subtrai = lambda x, y: x - y

multiplica = lambda x, y: x * y

divide = lambda x, y: x / y if y != 0 else "Erro: Divisão por zero"

x = float(input("Digite o primeiro número: "))
y = float(input("Digite o segundo número: "))

operacao = input("Escolha a operação (+, -, *, /): ")

operacoes = {
    '+': soma,
    '-': subtrai,
    '*': multiplica,
    '/': divide
}

if operacao in operacoes:
    resultado = operacoes[operacao](x, y)
    print(f"O resultado é: {resultado}")
else:
    print("Operação inválida")

O que realmente está sendo ensinado?

Aparentemente estamos aprendendo uma calculadora.

Mas, na prática, estamos aprendendo algo muito mais importante:

Selecionar automaticamente uma regra de negócio.

Aplicação na Plataforma AFA

Na Plataforma AFA, diversas regras precisam ser executadas automaticamente.

Por exemplo:

  • somar registros positivos;
  • somar registros negativos;
  • calcular a nota AFA;
  • calcular a média de A.C. (avaliação em construção);
  • calcular a nota trimestral;
  • identificar estudantes em atenção pedagógica.

Em vez de criar vários blocos if, podemos criar um catálogo de operações.

Exemplo: cálculo da nota AFA

somar_registros = lambda nota_inicial, pontuacao: nota_inicial + pontuacao

nota_inicial = 8.0

pontuacao = 1.5

nota_afa = somar_registros(nota_inicial, pontuacao)

nota_afa = min(nota_afa, 10.0)

print(nota_afa)

Resultado:

9.5

Exemplo real do projeto AFA

Vamos imaginar o estudante Anik.

nota_inicial = 8.0

pontuacao_positiva = 8.1

pontuacao_negativa = -0.9

Podemos criar operações específicas:

somar_pontos = lambda positivos, negativos: positivos + negativos

calcular_nota_afa = lambda nota_base, saldo: min(nota_base + saldo, 10.0)

Aplicação:

saldo = somar_pontos(8.1, -0.9)

nota_final = calcular_nota_afa(8.0, saldo)

print(nota_final)

Resultado:

10.0

Aplicação na futura nota trimestral

Esta atividade conversa diretamente com o problema que estamos modelando para a evolução do sistema ACtive Soft.

Hoje:

Professor calcula tudo manualmente.

Amanhã:

Sistema recebe:
↓
Notas de A.C.
↓
Nota AFA
↓
Nota extra do simulado
↓
Calcula automaticamente

Podemos criar funções lambda para cada etapa.

media_ac = lambda soma, quantidade: soma / quantidade

adicionar_bonus = lambda media, bonus: media + bonus

nota_trimestral = lambda ac, af: (ac + af) / 2

Exemplo:

ac = 8.5

bonus = 0.5

af = 9.0

ac_final = adicionar_bonus(ac, bonus)

trimestre = nota_trimestral(ac_final, af)

print(trimestre)

O que realmente aprendi?

Na atividade da Alura:

Escolher operação matemática
↓
Executar cálculo

Na Plataforma AFA:

Escolher regra pedagógica
↓
Executar cálculo correspondente

Percebi que o principal aprendizado desta atividade foi compreender que funções lambda permitem criar pequenas regras especializadas e organizá-las de forma estruturada. No contexto da Plataforma AFA, elas poderão compor o motor de cálculo responsável por transformar registros dos professores em notas, indicadores, alertas pedagógicos e relatórios automáticos.

1 resposta

Oi, Patricia. Tudo bem com você?

Obrigado por compartilhar sua análise sobre a atividade de calculadora com lambda. A solução apresentada atende corretamente ao desafio proposto, utilizando funções lambda para representar cada operação matemática e um dicionário para associar os operadores às respectivas funções. Essa abordagem é bastante interessante porque evita múltiplas estruturas condicionais e torna o código mais flexível para futuras expansões.

Gostei também da forma como você relacionou o exercício ao conceito de seleção de regras de negócio. De fato, o uso de um dicionário de funções é uma técnica muito utilizada para direcionar comportamentos diferentes a partir de uma chave, algo que aparece com frequência em aplicações reais. Além disso, o tratamento da divisão por zero foi uma boa preocupação, evitando que a operação gere uma exceção durante a execução.

Ao pensar em sistemas maiores, como você organizaria essas operações caso a quantidade de regras crescesse para dezenas ou centenas de funções diferentes?

Parabéns pelo aprofundamento no tema e por compartilhar suas reflexões com a comunidade. Seu estudo demonstra uma busca constante por conectar os conceitos aprendidos com aplicações práticas. O fórum está à disposição para novas discussões e dúvidas.

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