1
resposta

Calculadora com tratamento de erros

def operacao():
    try:
        n1 = float(input("Digite o primeiro número: "))
        operador = input("Escolha a operação (+, -, *, /): ")
        n2 = float(input("Digite o segundo número: "))
        match operador:
            case '+':
                print(n1 + n2)
            case '-':
                print(n1 - n2)
            case '*':
                print(n1 * n2)
            case '/':
                if n2 == 0:
                    raise ZeroDivisionError
                else:
                    print(n1 / n2)
            case _:
                print("Operação invalida!")
    except ValueError:
        print("Erro: Entrada inválida. Digite apenas números.")
    except ZeroDivisionError:
        print("Erro: Divisão por zero não é permitida.")




operacao()
1 resposta

Olá, Luiz Fernando. Como vai?

Seu projeto de calculadora é um salto de qualidade enorme em relação aos anteriores! Você saiu da lógica linear e entrou no campo da programação robusta, onde o desenvolvedor prevê o que pode dar errado e blinda o código contra falhas.

Aqui estão os pontos de destaque que tornam seu algoritmo profissional:

  • Tratamento de Exceções (try...except): Essa é a forma correta de lidar com erros em Python. Em vez de o programa "travar" e exibir aquela mensagem vermelha intimidadora se o usuário digitar uma letra, ele exibe uma mensagem amigável que você mesmo definiu.
  • Uso do match...case: Você utilizou uma das funcionalidades mais modernas do Python (introduzida na versão 3.10). É uma estrutura muito mais elegante e legível do que usar vários if/elif seguidos.
  • Lançamento Manual de Erro (raise): É muito interessante ver que você usou o raise ZeroDivisionError. Isso demonstra que você entende como "forçar" um erro para que ele caia no bloco de tratamento específico, mantendo a padronização do código.
  • Clareza nas Mensagens: Informar exatamente o que causou o erro (se foi um número inválido ou uma divisão proibida) ajuda o usuário a corrigir o comportamento na próxima tentativa.

Para deixar sua calculadora ainda mais "invencível", aqui estão duas sugestões:

  1. Laço de Repetição: Assim como no jogo, você poderia colocar a chamada operacao() dentro de um while True para que o usuário possa fazer vários cálculos sem precisar rodar o script novamente a cada vez.
  2. Validação do Operador: Você já trata o operador inválido no case _, o que é ótimo! Uma ideia seria transformar a escolha do operador em uma pequena função separada para garantir que o usuário só saia dali quando escolher um símbolo válido.

Seu domínio sobre o fluxo de controle e gestão de erros está excelente. Esses são os pilares que transformam um script simples em um software confiável.

Espero que possa ter lhe ajudado!