ComenzarEmpieza gratis

Detección de excepciones

Antes de que empieces a escribir tus propias excepciones personalizadas, asegurémonos de que conoces los fundamentos del manejo de excepciones.

En este ejercicio, se te da una función invert_at_index(x, ind) que toma dos argumentos, una lista x y un índice ind, e invierte el elemento de la lista en ese índice. Por ejemplo invert_at_index([5,6,7], 1) devuelve 1/6, o 0.166666.

Intenta ejecutar el código tal cual y examina la salida en la consola. Hay dos operaciones inseguras en esta función: en primer lugar, si el elemento que intentamos invertir tiene el valor 0, el código provocará una excepción ZeroDivisionError. En segundo lugar, si el índice pasado a la función está fuera del rango de la lista, el código provocará un IndexError. En ambos casos, el guión se interrumpirá, lo que puede no ser deseable.

Este ejercicio forma parte del curso

Programación orientada a objetos en Python

Ver curso

Instrucciones de ejercicio

Utiliza un patrón try - except - except (con dos bloques except ) dentro de la función para atrapar y manejar dos excepciones de la siguiente manera:

  • try ejecutando el código tal cual,
  • si aparece ZeroDivisionError, imprime "Cannot divide by zero!",
  • si se produce IndexError, imprime "Index out of range!"

Sabes que lo has hecho bien si el código se ejecuta sin errores y la salida en la consola es_:

0.16666666666666666
Cannot divide by zero!
None
Index out of range!
None

Ejercicio interactivo práctico

Pruebe este ejercicio completando este código de muestra.

# MODIFY the function to catch exceptions
def invert_at_index(x, ind):
    return 1/x[ind]
 
a = [5,6,0,7]

# Works okay
print(invert_at_index(a, 1))

# Potential ZeroDivisionError
print(invert_at_index(a, 2))

# Potential IndexError
print(invert_at_index(a, 5))
Editar y ejecutar código