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!
Olá, Estudante. Como vai?
Parabéns pelo projeto! Sua calculadora utilizando funções lambda em Python ficou excelente e funcionou perfeitamente, exibindo o resultado correto de 1700.0 para a multiplicação de 25 por 68.
O uso de funções anônimas (lambda) é ideal para cenários como o de uma calculadora simples, onde realizamos operações matemáticas curtas que ocupam apenas uma única linha de código. Você estruturou muito bem a lógica de captura de dados e a cadeia de condicionais (if/elif/else) para direcionar o operador escolhido.
Para enriquecer ainda mais o seu aprendizado e trazer duas boas práticas bem valiosas de programação em Python, deixo aqui algumas sugestões:
Sempre que criamos calculadoras ou lidamos com divisão de dados inseridos pelo usuário, precisamos prever o cenário em que o segundo número digitado pode ser o zero. No seu código atual, se o usuário tentar dividir qualquer número por 0, o Python vai estourar um erro clássico chamado ZeroDivisionError e interromper a execução do programa.
Uma boa prática para tornar seu algoritmo mais robusto é adicionar essa validação diretamente no bloco da divisão:
elif operador == "/":
if num2 != 0:
resultado = divisao(num1, num2)
else:
resultado = "Erro: Não é possível dividir por zero."
Conforme você for evoluindo no Python, verá que estruturas com muitos elif podem se tornar difíceis de manter. Uma técnica elegante e muito utilizada no mercado é mapear as operações dentro de um dicionário, associando o símbolo do operador diretamente à sua função lambda correspondente.
Veja como o seu bloco de verificação poderia ser simplificado e limpo:
# Mapeando os operadores diretamente para as funções lambda
operacoes = {
"+": soma,
"-": subtracao,
"*": multiplicacao,
"/": divisao
}
# Verificando e executando a operação sem precisar de vários IFs
if operador in operacoes:
if operador == "/" and num2 == 0:
resultado = "Erro: Divisão por zero."
else:
resultado = operacoes[operador](num1, num2)
else:
resultado = "Operação inválida."
Essa abordagem deixa o código extremamente escalável. Se amanhã você quiser adicionar uma operação de potenciação, por exemplo, bastaria criar a lambda e adicionar uma única linha nova dentro do dicionário operacoes.
A sua base lógica com funções e manipulação de tipos (float e string) está excelente. Continue mandando ver nos desafios!
Espero que possa ter lhe ajudado!
Ei Evandro, muito obrigada pelo elogio e pela dica!