1
resposta

[Projeto] Calculadora com tratamento de erros

def calcular(operacao,a,b):
    somar = lambda a,b : a + b
    multiplicar = lambda a,b : a * b
    dividir = lambda a,b : a / b
    subtrair = lambda a,b : a - b

    match operacao:
        case "+": resultado = somar(a,b)
        case "*": resultado = multiplicar(a,b)
        case "/": resultado = dividir(a,b)
        case "-": resultado = subtrair(a,b)
    return resultado

try:
    numero_1 = float(input("Digite o primeiro número :"))
    operacao = input("Escolha a operação: (+, -, *, /): ")

    while operacao not in ('+','-','*','/') :
        operacao = input("Operação Inválida ! Escolha uma operação: (+, -, *, /): ")

    numero_2 = float(input("Digite o segundo número :"))

    resultado = calcular(operacao,numero_1,numero_2)
    print(f'O resultado foi: {resultado}')

except ValueError:
     print("Entrada inválida: Digite apenas número inteiros !")        
except ZeroDivisionError:
     print("Erro: Divisão por zero não é permitida.")     

1 resposta

E aí! Tudo bem?

Parabéns! Mantenha o ritmo nos exercícios e continue compartilhando na nossa comunidade.

Percebi que você praticou o uso de funções com parâmetros dinâmicos, aplicou muito bem o match-case para organizar múltiplas opções de operação e ainda entendeu a relevância de tratar exceções para evitar falhas durante a execução do programa.

Uma sugestão para evoluir ainda mais é usar um dicionários de funções com o objetivo de tornar o código mais enxuto e escalável. Veja só:

def calcular(operacao, a, b):
    operacoes = {
        '+': lambda a, b: a + b,
        '-': lambda a, b: a - b,
        '*': lambda a, b: a * b,
        '/': lambda a, b: a / b
    }
    return operacoes[operacao](a, b)

try:
    numero_1 = float(input("Digite o primeiro número :"))
    operacao = input("Escolha a operação: (+, -, *, /): ")

    while operacao not in ('+','-','*','/') :
        operacao = input("Operação Inválida ! Escolha uma operação: (+, -, *, /): ")

    numero_2 = float(input("Digite o segundo número :"))

    resultado = calcular(operacao,numero_1,numero_2)
    print(f'O resultado foi: {resultado}')

except ValueError:
     print("Entrada inválida: Digite apenas número inteiros !")        
except ZeroDivisionError:
     print("Erro: Divisão por zero não é permitida.")    

Essa abordagem facilita a manutenção e permite adicionar novas operações com mais rapidez.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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