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

Resolução: calculadora em lambda

n1 = float(input('Digite o primeiro numero:'))
n2 = float(input('Digite o segundo numero:'))
symbol = input('Escolha a operação + - * / : ')

def calculator():
    if symbol == '+':
        calc = n1 + n2
    elif symbol == '-':
        calc = n1 - n2
    elif symbol == '*':
        calc = n1 * n2
    elif symbol == '/':
        calc = n1 / n2 
    print(f'resultado: {calc}')


calculator()


#usando lambda

x = float(input('Digite o primeiro numero:'))   
y = float(input('Digite o segundo numero:'))   

def calculator_lambda():

    soma = lambda x,y: x + y
    subtraction = lambda x,y: x - y
    multply = lambda x, y: x * y
    division = lambda x, y: x / y

    operation = input('Digite o operador (+ - * /)')

    if operation == '+':
        result = soma(x,y)
    elif operation == '-':
        result = subtraction(x,y)
    elif operation == '*':
        result = multply(x,y)
    elif operation == '/':
        result = division(x,y)
    print(f'resultado {result}')

calculator_lambda()

Fiquei em duvida exatamente como funciona o lambda, e qual é a vantagem de usar ele? qual sua função exatemente?

1 resposta
solução!

Olá, Matheus! Tudo bem?

Parabéns pela iniciativa de testar duas abordagens diferentes para o mesmo problema! É assim que evoluímos na programação.

Em Python, uma função lambda é o que chamamos de função anônima. Ela é uma função como qualquer outra (feita com def), mas com uma sintaxe mais "enxuta" e restrita.

Pense nela como uma "função rápida" ou "descartável" para tarefas simples.

A estrutura é: lambda argumentos: expressão

Veja a comparação:

Função Tradicional:
python def somar(x, y): return x + y
Função Lambda:
python lambda x, y: x + y

(Note que ela não precisa da palavra return, o retorno é automático).*


A principal vantagem é a concisão. Ela é muito útil quando você precisa de uma função pequena para passar como argumento para outra função, ou para criar estruturas de dados inteligentes sem escrever muito código.

No seu exemplo, você criou as lambdas, mas ainda usou muitos if/elif para escolher a operação. Uma grande vantagem das lambdas nesse caso é poder armazená-las dentro de um dicionário.

Olha como o código fica mais limpo e direto, eliminando toda a estrutura de repetição condicional:

x = float(input('Digite o primeiro numero: '))
y = float(input('Digite o segundo numero: '))
operador = input('Digite o operador (+ - * /): ')

# Dicionário mapeando o símbolo -> função lambda correspondente
operacoes = {
    '+': lambda a, b: a + b,
    '-': lambda a, b: a - b,
    '*': lambda a, b: a * b,
    '/': lambda a, b: a / b
}

# Verificamos se o operador existe no dicionário e executamos
if operador in operacoes:
    # A mágica acontece aqui: pegamos a função lambda e já passamos (x, y)
    resultado = operacoes[operador](x, y)
    print(f'Resultado: {resultado}')
else:
    print('Operador inválido')
Ícone Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

DOCUMENTAÇÃO

Bons estudos!

Sucesso

Imagem da comunidade