Fácil Python

Tratando divisão por zero

Enunciado

Escreva uma função dividir_seguro(a, b) que retorna o resultado da divisão a / b. Se b for zero, capture a exceção ZeroDivisionError e retorne None, imprimindo uma mensagem de erro. Use try/except.

Requisitos

  • A função deve se chamar dividir_seguro e aceitar dois parâmetros.
  • Deve capturar especificamente ZeroDivisionError.
  • Deve retornar None em caso de divisão por zero.
  • Deve imprimir a mensagem Erro: divisão por zero quando ocorrer o erro.

Código inicial

def dividir_seguro(a, b):
    # seu código aqui
    pass

print(dividir_seguro(10, 2))
print(dividir_seguro(10, 0))

Saída esperada

5.0
Erro: divisão por zero
None
Ver dica

Use try: para a divisão e except ZeroDivisionError: para tratar o erro, imprimindo a mensagem e retornando None.

Mostrar solução
def dividir_seguro(a, b):
    try:
        return a / b
    except ZeroDivisionError:
        print("Erro: divisão por zero")
        return None

print(dividir_seguro(10, 2))
print(dividir_seguro(10, 0))

Passo a passo

  1. Definimos a função dividir_seguro que recebe a e b.
  2. Dentro do try, tentamos realizar a divisão a / b. Se b for zero, o Python levanta ZeroDivisionError.
  3. O bloco except ZeroDivisionError captura especificamente esse erro.
  4. Dentro do except, imprimimos a mensagem Erro: divisão por zero e retornamos None.
  5. Fora da função, chamamos com (10, 2) e (10, 0) para testar ambos os casos.

Por que funciona

O try/except isola a operação perigosa. Quando a exceção é levantada, o fluxo pula para o except correspondente, evitando que o programa pare. Como capturamos apenas ZeroDivisionError, outros erros (como TypeError) ainda seriam propagados, o que é uma boa prática.

Erros comuns

  • Capturar Exception genérica: except Exception: funciona, mas esconde outros erros. Prefira o tipo específico.
  • Esquecer o return None: sem ele, a função retorna None implicitamente, mas é melhor ser explícito.
  • Colocar código fora do try: se a divisão estiver fora, o erro não será capturado.

Outra forma de resolver

Poderia usar if b == 0: antes da divisão, mas isso não é tratamento de exceção. A forma com try/except é mais idiomática em Python (EAFP: Easier to Ask Forgiveness than Permission).

Saída esperada

5.0
Erro: divisão por zero
None