1
resposta

[Projeto] Calculadora com tratamento de erros

import os

def calcular(num1, op, num2):
    if op == '+':
        resultado = num1 + num2
    elif op == '-':
        resultado = num1 - num2
    elif op == "*":
        resultado = num1 * num2
    else:
        resultado = num1 / num2
    return resultado


def validar_operador(op):
    operadores = '+-*/'
    return op in operadores
        


os.system('cls')
try:
    num1 = float(input('Digite o primeiro número: '))

    while True:
        operador = str(input('Escolha um operador | + | - | * | / |: '))
        if validar_operador(operador):
            break
        else:
            print('Operador inválido! Tente novamente!\n')


    num2 = float(input('Digite o segundo número: '))

    try:
        resultado = calcular(num1,operador,num2)
        print(f'Resultado: {resultado}')

    except ZeroDivisionError:
        print('Erro: Divisão por zero não é permitida.')

    
except ValueError:
    print('Erro: Entrada inválida. Digite apenas números.!')
1 resposta

Oi, Kelvin! Como vai?

Você estruturou bem a calculadora ao separar a função calcular() da função validar_operador(), o que deixa o código mais organizado e fácil de manter. Também foi uma boa escolha usar try e except para tratar entradas inválidas e divisão por zero.

Uma dica interessante para o futuro é validar também a divisão antes de fazer o cálculo, deixando a função calcular() mais segura. Veja este exemplo:


def calcular(num1, op, num2):
    if op == '/' and num2 == 0:
        return 'Erro: divisao por zero nao permitida'
    if op == '+':
        return num1 + num2
    if op == '-':
        return num1 - num2
    if op == '*':
        return num1 * num2
    return num1 / num2

Esse código verifica se o operador é / e se o segundo número é 0 antes da divisão, evitando o erro durante a execução.

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