Menu iconMenu icon
Programación en Python Desbloqueada para Principiantes

Capítulo 9: Manejo de Errores y Excepciones

9.2: Manejo de excepciones con try y except

Python es un lenguaje de programación increíblemente versátil que ofrece una amplia gama de herramientas y funciones a los desarrolladores. Una de estas características es la capacidad de manejar excepciones usando las declaraciones try y except. Estas declaraciones permiten a los desarrolladores monitorear la ejecución del código y proporcionar un medio para lidiar con las excepciones que pueden surgir durante la ejecución.

Cuando un bloque de código está encerrado dentro de una declaración try, Python ejecuta el código, monitoreándolo para cualquier excepción que pueda ocurrir. Esto significa que incluso si se produce una excepción, el programa puede continuar ejecutándose sin bloquearse o causar otros problemas. En su lugar, la ejecución del programa salta al bloque except apropiado, que está diseñado para manejar la excepción específica o tupla de excepciones que se produjo.

Es importante tener en cuenta que la declaración try debe ir seguida de uno o más bloques except. Estos bloques están diseñados para manejar las excepciones específicas que pueden surgir durante la ejecución. Además, también puede usar un bloque else opcional para especificar código que se ejecutará si no se produce ninguna excepción. Esto es útil para casos en los que desea realizar acciones adicionales si el código se ejecuta sin problemas.

Finalmente, está el bloque finally. Este bloque se utiliza para especificar código que se ejecutará independientemente de si se produce una excepción o no. Esto es útil para casos en los que necesita liberar recursos o realizar otras acciones que se requieren independientemente del resultado de la ejecución del programa.

En resumen, las declaraciones try y except son herramientas valiosas para cualquier desarrollador de Python. Al usar estas declaraciones, puede manejar excepciones de una manera que permita que su programa continúe ejecutándose incluso si se producen errores. Además, los bloques else y finally proporcionan funcionalidad adicional que se puede usar para hacer que su código sea más robusto y confiable.

Sintaxis general para una declaración try-except:

try:
    # code that might raise an exception
except ExceptionType1:
    # code to handle exception of type ExceptionType1
except (ExceptionType2, ExceptionType3):
    # code to handle exception of type ExceptionType2 or ExceptionType3
else:
    # code to be executed if no exception was raised
finally:
    # code that will always be executed, regardless of exceptions

Ejemplo de uso de las declaraciones try y except para manejar excepciones:

try:
    numerator = 10
    denominator = 0
    result = numerator / denominator
except ZeroDivisionError:
    print("Cannot divide by zero")
except Exception as e:
    print("An unknown error occurred:", e)
else:
    print("The division was successful:", result)
finally:
    print("Thank you for using our division calculator")

En este ejemplo, primero intentamos realizar la operación de división. Si ocurre una excepción ZeroDivisionError, imprimimos un mensaje informativo. Si ocurre cualquier otra excepción, la capturamos usando la clase Exception, que es una clase base para todas las excepciones integradas, e imprimimos un mensaje de error desconocido. Si no se produce ninguna excepción, imprimimos el resultado de la división. Finalmente, imprimimos un mensaje agradeciendo al usuario por usar nuestra calculadora de división, independientemente de si se produjo una excepción o no.

Por ejemplo, al capturar una clase de excepción amplia como Exception, es posible que pasemos por alto una excepción específica que no se anticipó o que no sabemos cómo manejar. En tal caso, la excepción será capturada y procesada por el manejador de excepciones general, que puede no ser capaz de manejar la excepción específica adecuadamente. Como resultado, el error puede estar oculto o, peor aún, el código puede continuar ejecutándose con un comportamiento inesperado.

Por otro lado, cuando solo capturamos las excepciones que esperamos que ocurran, podemos manejarlas específicamente y proporcionar mejores mensajes de error a los usuarios. Esto puede ayudar a mejorar la calidad del código y hacer que sea más fácil de mantener y depurar. Además, puede hacer que el código sea más robusto contra cambios inesperados en el entorno o los datos de entrada.

Por lo tanto, se recomienda ser cauteloso al definir manejadores de excepciones y solo capturar las excepciones que podemos manejar adecuadamente. Esto puede ayudar a que el código sea más confiable y fácil de mantener en el largo plazo.

Ejercicio 9.2.1: Lectura segura de archivos

Escriba un programa que intente leer un archivo proporcionado por el usuario e imprima el contenido del archivo. Si el archivo no se encuentra o no se puede leer, muestre un mensaje de error.

Instrucciones:

  1. Solicite al usuario un nombre de archivo.
  2. Use un bloque try-except para abrir el archivo y leer su contenido.
  3. Si ocurre un error FileNotFoundError, imprima un mensaje de error.
  4. De lo contrario, imprima el contenido del archivo.
  5. Cierre el archivo.

Solución:

filename = input("Enter the filename: ")

try:
    with open(filename, "r") as file:
        content = file.read()
except FileNotFoundError:
    print(f"Error: The file '{filename}' does not exist or could not be found.")
else:
    print("File contents:")
    print(content)

Salida:

Enter the filename: sample.txt
File contents:
This is a sample text file.

Ejercicio 9.2.2: División segura

Escriba un programa que tome dos números como entrada y realice una división. Si ocurre una división por cero, muestre un mensaje de error.

Instrucciones:

  1. Solicite al usuario dos números.
  2. Use un bloque try-except para realizar la división.
  3. Si ocurre un error ZeroDivisionError, imprima un mensaje de error.
  4. De lo contrario, imprima el resultado de la división.

Solución:

numerator = float(input("Enter the numerator: "))
denominator = float(input("Enter the denominator: "))

try:
    result = numerator / denominator
except ZeroDivisionError:
    print("Error: Division by zero is not allowed.")
else:
    print(f"The result is {result}.")

Salida:

Enter the numerator: 10
Enter the denominator: 0
Error: Division by zero is not allowed.

Ejercicio 9.2.3: Indexación segura de listas

Escriba un programa que intente acceder a un elemento en una lista por su índice proporcionado por el usuario. Si ocurre un error IndexError, muestre un mensaje de error.

Instrucciones:

  1. Cree una lista con algunos elementos.
  2. Solicite al usuario un índice.
  3. Use un bloque try-except para acceder al elemento en el índice dado.
  4. Si ocurre un error IndexError, imprima un mensaje de error.
  5. De lo contrario, imprima el elemento accedido.

Solución:

my_list = [10, 20, 30, 40, 50]
index = int(input("Enter the index of the element to retrieve: "))

try:
    element = my_list[index]
except IndexError:
    print(f"Error: The index '{index}' is out of range.")
else:
    print(f"The element at index {index} is {element}.")

Salida:

Enter the index of the element to retrieve: 7
Error: The index '7' is out of range.

9.2: Manejo de excepciones con try y except

Python es un lenguaje de programación increíblemente versátil que ofrece una amplia gama de herramientas y funciones a los desarrolladores. Una de estas características es la capacidad de manejar excepciones usando las declaraciones try y except. Estas declaraciones permiten a los desarrolladores monitorear la ejecución del código y proporcionar un medio para lidiar con las excepciones que pueden surgir durante la ejecución.

Cuando un bloque de código está encerrado dentro de una declaración try, Python ejecuta el código, monitoreándolo para cualquier excepción que pueda ocurrir. Esto significa que incluso si se produce una excepción, el programa puede continuar ejecutándose sin bloquearse o causar otros problemas. En su lugar, la ejecución del programa salta al bloque except apropiado, que está diseñado para manejar la excepción específica o tupla de excepciones que se produjo.

Es importante tener en cuenta que la declaración try debe ir seguida de uno o más bloques except. Estos bloques están diseñados para manejar las excepciones específicas que pueden surgir durante la ejecución. Además, también puede usar un bloque else opcional para especificar código que se ejecutará si no se produce ninguna excepción. Esto es útil para casos en los que desea realizar acciones adicionales si el código se ejecuta sin problemas.

Finalmente, está el bloque finally. Este bloque se utiliza para especificar código que se ejecutará independientemente de si se produce una excepción o no. Esto es útil para casos en los que necesita liberar recursos o realizar otras acciones que se requieren independientemente del resultado de la ejecución del programa.

En resumen, las declaraciones try y except son herramientas valiosas para cualquier desarrollador de Python. Al usar estas declaraciones, puede manejar excepciones de una manera que permita que su programa continúe ejecutándose incluso si se producen errores. Además, los bloques else y finally proporcionan funcionalidad adicional que se puede usar para hacer que su código sea más robusto y confiable.

Sintaxis general para una declaración try-except:

try:
    # code that might raise an exception
except ExceptionType1:
    # code to handle exception of type ExceptionType1
except (ExceptionType2, ExceptionType3):
    # code to handle exception of type ExceptionType2 or ExceptionType3
else:
    # code to be executed if no exception was raised
finally:
    # code that will always be executed, regardless of exceptions

Ejemplo de uso de las declaraciones try y except para manejar excepciones:

try:
    numerator = 10
    denominator = 0
    result = numerator / denominator
except ZeroDivisionError:
    print("Cannot divide by zero")
except Exception as e:
    print("An unknown error occurred:", e)
else:
    print("The division was successful:", result)
finally:
    print("Thank you for using our division calculator")

En este ejemplo, primero intentamos realizar la operación de división. Si ocurre una excepción ZeroDivisionError, imprimimos un mensaje informativo. Si ocurre cualquier otra excepción, la capturamos usando la clase Exception, que es una clase base para todas las excepciones integradas, e imprimimos un mensaje de error desconocido. Si no se produce ninguna excepción, imprimimos el resultado de la división. Finalmente, imprimimos un mensaje agradeciendo al usuario por usar nuestra calculadora de división, independientemente de si se produjo una excepción o no.

Por ejemplo, al capturar una clase de excepción amplia como Exception, es posible que pasemos por alto una excepción específica que no se anticipó o que no sabemos cómo manejar. En tal caso, la excepción será capturada y procesada por el manejador de excepciones general, que puede no ser capaz de manejar la excepción específica adecuadamente. Como resultado, el error puede estar oculto o, peor aún, el código puede continuar ejecutándose con un comportamiento inesperado.

Por otro lado, cuando solo capturamos las excepciones que esperamos que ocurran, podemos manejarlas específicamente y proporcionar mejores mensajes de error a los usuarios. Esto puede ayudar a mejorar la calidad del código y hacer que sea más fácil de mantener y depurar. Además, puede hacer que el código sea más robusto contra cambios inesperados en el entorno o los datos de entrada.

Por lo tanto, se recomienda ser cauteloso al definir manejadores de excepciones y solo capturar las excepciones que podemos manejar adecuadamente. Esto puede ayudar a que el código sea más confiable y fácil de mantener en el largo plazo.

Ejercicio 9.2.1: Lectura segura de archivos

Escriba un programa que intente leer un archivo proporcionado por el usuario e imprima el contenido del archivo. Si el archivo no se encuentra o no se puede leer, muestre un mensaje de error.

Instrucciones:

  1. Solicite al usuario un nombre de archivo.
  2. Use un bloque try-except para abrir el archivo y leer su contenido.
  3. Si ocurre un error FileNotFoundError, imprima un mensaje de error.
  4. De lo contrario, imprima el contenido del archivo.
  5. Cierre el archivo.

Solución:

filename = input("Enter the filename: ")

try:
    with open(filename, "r") as file:
        content = file.read()
except FileNotFoundError:
    print(f"Error: The file '{filename}' does not exist or could not be found.")
else:
    print("File contents:")
    print(content)

Salida:

Enter the filename: sample.txt
File contents:
This is a sample text file.

Ejercicio 9.2.2: División segura

Escriba un programa que tome dos números como entrada y realice una división. Si ocurre una división por cero, muestre un mensaje de error.

Instrucciones:

  1. Solicite al usuario dos números.
  2. Use un bloque try-except para realizar la división.
  3. Si ocurre un error ZeroDivisionError, imprima un mensaje de error.
  4. De lo contrario, imprima el resultado de la división.

Solución:

numerator = float(input("Enter the numerator: "))
denominator = float(input("Enter the denominator: "))

try:
    result = numerator / denominator
except ZeroDivisionError:
    print("Error: Division by zero is not allowed.")
else:
    print(f"The result is {result}.")

Salida:

Enter the numerator: 10
Enter the denominator: 0
Error: Division by zero is not allowed.

Ejercicio 9.2.3: Indexación segura de listas

Escriba un programa que intente acceder a un elemento en una lista por su índice proporcionado por el usuario. Si ocurre un error IndexError, muestre un mensaje de error.

Instrucciones:

  1. Cree una lista con algunos elementos.
  2. Solicite al usuario un índice.
  3. Use un bloque try-except para acceder al elemento en el índice dado.
  4. Si ocurre un error IndexError, imprima un mensaje de error.
  5. De lo contrario, imprima el elemento accedido.

Solución:

my_list = [10, 20, 30, 40, 50]
index = int(input("Enter the index of the element to retrieve: "))

try:
    element = my_list[index]
except IndexError:
    print(f"Error: The index '{index}' is out of range.")
else:
    print(f"The element at index {index} is {element}.")

Salida:

Enter the index of the element to retrieve: 7
Error: The index '7' is out of range.

9.2: Manejo de excepciones con try y except

Python es un lenguaje de programación increíblemente versátil que ofrece una amplia gama de herramientas y funciones a los desarrolladores. Una de estas características es la capacidad de manejar excepciones usando las declaraciones try y except. Estas declaraciones permiten a los desarrolladores monitorear la ejecución del código y proporcionar un medio para lidiar con las excepciones que pueden surgir durante la ejecución.

Cuando un bloque de código está encerrado dentro de una declaración try, Python ejecuta el código, monitoreándolo para cualquier excepción que pueda ocurrir. Esto significa que incluso si se produce una excepción, el programa puede continuar ejecutándose sin bloquearse o causar otros problemas. En su lugar, la ejecución del programa salta al bloque except apropiado, que está diseñado para manejar la excepción específica o tupla de excepciones que se produjo.

Es importante tener en cuenta que la declaración try debe ir seguida de uno o más bloques except. Estos bloques están diseñados para manejar las excepciones específicas que pueden surgir durante la ejecución. Además, también puede usar un bloque else opcional para especificar código que se ejecutará si no se produce ninguna excepción. Esto es útil para casos en los que desea realizar acciones adicionales si el código se ejecuta sin problemas.

Finalmente, está el bloque finally. Este bloque se utiliza para especificar código que se ejecutará independientemente de si se produce una excepción o no. Esto es útil para casos en los que necesita liberar recursos o realizar otras acciones que se requieren independientemente del resultado de la ejecución del programa.

En resumen, las declaraciones try y except son herramientas valiosas para cualquier desarrollador de Python. Al usar estas declaraciones, puede manejar excepciones de una manera que permita que su programa continúe ejecutándose incluso si se producen errores. Además, los bloques else y finally proporcionan funcionalidad adicional que se puede usar para hacer que su código sea más robusto y confiable.

Sintaxis general para una declaración try-except:

try:
    # code that might raise an exception
except ExceptionType1:
    # code to handle exception of type ExceptionType1
except (ExceptionType2, ExceptionType3):
    # code to handle exception of type ExceptionType2 or ExceptionType3
else:
    # code to be executed if no exception was raised
finally:
    # code that will always be executed, regardless of exceptions

Ejemplo de uso de las declaraciones try y except para manejar excepciones:

try:
    numerator = 10
    denominator = 0
    result = numerator / denominator
except ZeroDivisionError:
    print("Cannot divide by zero")
except Exception as e:
    print("An unknown error occurred:", e)
else:
    print("The division was successful:", result)
finally:
    print("Thank you for using our division calculator")

En este ejemplo, primero intentamos realizar la operación de división. Si ocurre una excepción ZeroDivisionError, imprimimos un mensaje informativo. Si ocurre cualquier otra excepción, la capturamos usando la clase Exception, que es una clase base para todas las excepciones integradas, e imprimimos un mensaje de error desconocido. Si no se produce ninguna excepción, imprimimos el resultado de la división. Finalmente, imprimimos un mensaje agradeciendo al usuario por usar nuestra calculadora de división, independientemente de si se produjo una excepción o no.

Por ejemplo, al capturar una clase de excepción amplia como Exception, es posible que pasemos por alto una excepción específica que no se anticipó o que no sabemos cómo manejar. En tal caso, la excepción será capturada y procesada por el manejador de excepciones general, que puede no ser capaz de manejar la excepción específica adecuadamente. Como resultado, el error puede estar oculto o, peor aún, el código puede continuar ejecutándose con un comportamiento inesperado.

Por otro lado, cuando solo capturamos las excepciones que esperamos que ocurran, podemos manejarlas específicamente y proporcionar mejores mensajes de error a los usuarios. Esto puede ayudar a mejorar la calidad del código y hacer que sea más fácil de mantener y depurar. Además, puede hacer que el código sea más robusto contra cambios inesperados en el entorno o los datos de entrada.

Por lo tanto, se recomienda ser cauteloso al definir manejadores de excepciones y solo capturar las excepciones que podemos manejar adecuadamente. Esto puede ayudar a que el código sea más confiable y fácil de mantener en el largo plazo.

Ejercicio 9.2.1: Lectura segura de archivos

Escriba un programa que intente leer un archivo proporcionado por el usuario e imprima el contenido del archivo. Si el archivo no se encuentra o no se puede leer, muestre un mensaje de error.

Instrucciones:

  1. Solicite al usuario un nombre de archivo.
  2. Use un bloque try-except para abrir el archivo y leer su contenido.
  3. Si ocurre un error FileNotFoundError, imprima un mensaje de error.
  4. De lo contrario, imprima el contenido del archivo.
  5. Cierre el archivo.

Solución:

filename = input("Enter the filename: ")

try:
    with open(filename, "r") as file:
        content = file.read()
except FileNotFoundError:
    print(f"Error: The file '{filename}' does not exist or could not be found.")
else:
    print("File contents:")
    print(content)

Salida:

Enter the filename: sample.txt
File contents:
This is a sample text file.

Ejercicio 9.2.2: División segura

Escriba un programa que tome dos números como entrada y realice una división. Si ocurre una división por cero, muestre un mensaje de error.

Instrucciones:

  1. Solicite al usuario dos números.
  2. Use un bloque try-except para realizar la división.
  3. Si ocurre un error ZeroDivisionError, imprima un mensaje de error.
  4. De lo contrario, imprima el resultado de la división.

Solución:

numerator = float(input("Enter the numerator: "))
denominator = float(input("Enter the denominator: "))

try:
    result = numerator / denominator
except ZeroDivisionError:
    print("Error: Division by zero is not allowed.")
else:
    print(f"The result is {result}.")

Salida:

Enter the numerator: 10
Enter the denominator: 0
Error: Division by zero is not allowed.

Ejercicio 9.2.3: Indexación segura de listas

Escriba un programa que intente acceder a un elemento en una lista por su índice proporcionado por el usuario. Si ocurre un error IndexError, muestre un mensaje de error.

Instrucciones:

  1. Cree una lista con algunos elementos.
  2. Solicite al usuario un índice.
  3. Use un bloque try-except para acceder al elemento en el índice dado.
  4. Si ocurre un error IndexError, imprima un mensaje de error.
  5. De lo contrario, imprima el elemento accedido.

Solución:

my_list = [10, 20, 30, 40, 50]
index = int(input("Enter the index of the element to retrieve: "))

try:
    element = my_list[index]
except IndexError:
    print(f"Error: The index '{index}' is out of range.")
else:
    print(f"The element at index {index} is {element}.")

Salida:

Enter the index of the element to retrieve: 7
Error: The index '7' is out of range.

9.2: Manejo de excepciones con try y except

Python es un lenguaje de programación increíblemente versátil que ofrece una amplia gama de herramientas y funciones a los desarrolladores. Una de estas características es la capacidad de manejar excepciones usando las declaraciones try y except. Estas declaraciones permiten a los desarrolladores monitorear la ejecución del código y proporcionar un medio para lidiar con las excepciones que pueden surgir durante la ejecución.

Cuando un bloque de código está encerrado dentro de una declaración try, Python ejecuta el código, monitoreándolo para cualquier excepción que pueda ocurrir. Esto significa que incluso si se produce una excepción, el programa puede continuar ejecutándose sin bloquearse o causar otros problemas. En su lugar, la ejecución del programa salta al bloque except apropiado, que está diseñado para manejar la excepción específica o tupla de excepciones que se produjo.

Es importante tener en cuenta que la declaración try debe ir seguida de uno o más bloques except. Estos bloques están diseñados para manejar las excepciones específicas que pueden surgir durante la ejecución. Además, también puede usar un bloque else opcional para especificar código que se ejecutará si no se produce ninguna excepción. Esto es útil para casos en los que desea realizar acciones adicionales si el código se ejecuta sin problemas.

Finalmente, está el bloque finally. Este bloque se utiliza para especificar código que se ejecutará independientemente de si se produce una excepción o no. Esto es útil para casos en los que necesita liberar recursos o realizar otras acciones que se requieren independientemente del resultado de la ejecución del programa.

En resumen, las declaraciones try y except son herramientas valiosas para cualquier desarrollador de Python. Al usar estas declaraciones, puede manejar excepciones de una manera que permita que su programa continúe ejecutándose incluso si se producen errores. Además, los bloques else y finally proporcionan funcionalidad adicional que se puede usar para hacer que su código sea más robusto y confiable.

Sintaxis general para una declaración try-except:

try:
    # code that might raise an exception
except ExceptionType1:
    # code to handle exception of type ExceptionType1
except (ExceptionType2, ExceptionType3):
    # code to handle exception of type ExceptionType2 or ExceptionType3
else:
    # code to be executed if no exception was raised
finally:
    # code that will always be executed, regardless of exceptions

Ejemplo de uso de las declaraciones try y except para manejar excepciones:

try:
    numerator = 10
    denominator = 0
    result = numerator / denominator
except ZeroDivisionError:
    print("Cannot divide by zero")
except Exception as e:
    print("An unknown error occurred:", e)
else:
    print("The division was successful:", result)
finally:
    print("Thank you for using our division calculator")

En este ejemplo, primero intentamos realizar la operación de división. Si ocurre una excepción ZeroDivisionError, imprimimos un mensaje informativo. Si ocurre cualquier otra excepción, la capturamos usando la clase Exception, que es una clase base para todas las excepciones integradas, e imprimimos un mensaje de error desconocido. Si no se produce ninguna excepción, imprimimos el resultado de la división. Finalmente, imprimimos un mensaje agradeciendo al usuario por usar nuestra calculadora de división, independientemente de si se produjo una excepción o no.

Por ejemplo, al capturar una clase de excepción amplia como Exception, es posible que pasemos por alto una excepción específica que no se anticipó o que no sabemos cómo manejar. En tal caso, la excepción será capturada y procesada por el manejador de excepciones general, que puede no ser capaz de manejar la excepción específica adecuadamente. Como resultado, el error puede estar oculto o, peor aún, el código puede continuar ejecutándose con un comportamiento inesperado.

Por otro lado, cuando solo capturamos las excepciones que esperamos que ocurran, podemos manejarlas específicamente y proporcionar mejores mensajes de error a los usuarios. Esto puede ayudar a mejorar la calidad del código y hacer que sea más fácil de mantener y depurar. Además, puede hacer que el código sea más robusto contra cambios inesperados en el entorno o los datos de entrada.

Por lo tanto, se recomienda ser cauteloso al definir manejadores de excepciones y solo capturar las excepciones que podemos manejar adecuadamente. Esto puede ayudar a que el código sea más confiable y fácil de mantener en el largo plazo.

Ejercicio 9.2.1: Lectura segura de archivos

Escriba un programa que intente leer un archivo proporcionado por el usuario e imprima el contenido del archivo. Si el archivo no se encuentra o no se puede leer, muestre un mensaje de error.

Instrucciones:

  1. Solicite al usuario un nombre de archivo.
  2. Use un bloque try-except para abrir el archivo y leer su contenido.
  3. Si ocurre un error FileNotFoundError, imprima un mensaje de error.
  4. De lo contrario, imprima el contenido del archivo.
  5. Cierre el archivo.

Solución:

filename = input("Enter the filename: ")

try:
    with open(filename, "r") as file:
        content = file.read()
except FileNotFoundError:
    print(f"Error: The file '{filename}' does not exist or could not be found.")
else:
    print("File contents:")
    print(content)

Salida:

Enter the filename: sample.txt
File contents:
This is a sample text file.

Ejercicio 9.2.2: División segura

Escriba un programa que tome dos números como entrada y realice una división. Si ocurre una división por cero, muestre un mensaje de error.

Instrucciones:

  1. Solicite al usuario dos números.
  2. Use un bloque try-except para realizar la división.
  3. Si ocurre un error ZeroDivisionError, imprima un mensaje de error.
  4. De lo contrario, imprima el resultado de la división.

Solución:

numerator = float(input("Enter the numerator: "))
denominator = float(input("Enter the denominator: "))

try:
    result = numerator / denominator
except ZeroDivisionError:
    print("Error: Division by zero is not allowed.")
else:
    print(f"The result is {result}.")

Salida:

Enter the numerator: 10
Enter the denominator: 0
Error: Division by zero is not allowed.

Ejercicio 9.2.3: Indexación segura de listas

Escriba un programa que intente acceder a un elemento en una lista por su índice proporcionado por el usuario. Si ocurre un error IndexError, muestre un mensaje de error.

Instrucciones:

  1. Cree una lista con algunos elementos.
  2. Solicite al usuario un índice.
  3. Use un bloque try-except para acceder al elemento en el índice dado.
  4. Si ocurre un error IndexError, imprima un mensaje de error.
  5. De lo contrario, imprima el elemento accedido.

Solución:

my_list = [10, 20, 30, 40, 50]
index = int(input("Enter the index of the element to retrieve: "))

try:
    element = my_list[index]
except IndexError:
    print(f"Error: The index '{index}' is out of range.")
else:
    print(f"The element at index {index} is {element}.")

Salida:

Enter the index of the element to retrieve: 7
Error: The index '7' is out of range.