Respecto la función de Dos excepciones después de un solo try,

explicada en el artículo REVIT ARCHITECTURE (957) – PYTHON – Funciones (41) – Excepciones (3) Varias excepciones se ha añadido una tercera rama except, pero esta vez no tiene un nombre de excepción especificado – podríamos decir que es anónima o es la excepción por defecto. Cuando se genera una excepción y no hay una rama except dedicada a esa excepción, esta excepción será manejada por la rama por defecto.
Nota:
La rama except por defecto debe ser siempre la última rama except.
Este código en Python utiliza un bloque try-except para manejar excepciones. Su propósito es intentar ejecutar una serie de instrucciones y, en caso de que ocurra un error o excepción, capturarla y reaccionar de forma controlada.
try:
Se coloca el código que puede generar excepciones dentro de este bloque. En este caso, se intenta convertir la entrada del usuario a un número entero y luego calcular su recíproco (1 dividido por el número ingresado).

Se pide al usuario que ingrese un número natural usando input().
El valor ingresado es convertido a un entero con int().
Luego se imprime el recíproco de ese número.
except ValueError:
Esta excepción captura los errores que ocurren si el usuario no introduce un número válido (por ejemplo, si ingresa texto en lugar de un número). Si se detecta un ValueError, se imprime un mensaje informando que no sabe cómo proceder.

except ZeroDivisionError:
Aquí se captura la excepción que ocurre si el usuario introduce el número 0. Intentar dividir por cero en Python genera un ZeroDivisionError, y en este caso, se imprime un mensaje personalizado indicando que la división por cero no es válida.

except:
Este bloque es una captura general de cualquier otra excepción que no esté explícitamente controlada. Si ocurre algún otro error que no sea un ValueError o ZeroDivisionError, se ejecuta este bloque e imprime un mensaje genérico.

Este código pide al usuario que ingrese un número natural y trata de calcular su recíproco. Usa varios bloques except para capturar errores específicos como:
Introducir un valor no numérico (ValueError),
Introducir el número 0 (ZeroDivisionError),
O cualquier otro error inesperado.
De esta manera, se evita que el programa se detenga abruptamente y, en su lugar, se le proporciona al usuario un mensaje adecuado dependiendo del tipo de error.
Contenido Web de Yolanda Muriel está sujeto bajo Licencia Creative Commons Atribución-NoComercial-SinDerivadas 3.0 Unported.
