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_seguroe aceitar dois parâmetros. - Deve capturar especificamente
ZeroDivisionError. - Deve retornar
Noneem caso de divisão por zero. - Deve imprimir a mensagem
Erro: divisão por zeroquando 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
- Definimos a função
dividir_seguroque recebeaeb. - Dentro do
try, tentamos realizar a divisãoa / b. Sebfor zero, o Python levantaZeroDivisionError. - O bloco
except ZeroDivisionErrorcaptura especificamente esse erro. - Dentro do
except, imprimimos a mensagemErro: divisão por zeroe retornamosNone. - 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
Exceptiongenérica:except Exception:funciona, mas esconde outros erros. Prefira o tipo específico. - Esquecer o
return None: sem ele, a função retornaNoneimplicitamente, 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