import math
# Definir una excepción personalizada
class NegativeNumberError(Exception):
"""Excepción que se lanza cuando se ingresa un número negativo en una operación no permitida."""
def __init__(self, numero, mensaje="No se puede calcular la raíz cuadrada de un número negativo."):
self.numero = numero
self.mensaje = mensaje
super().__init__(self.mensaje)
def calcular_raiz_cuadrada(numero):
"""
Calcula la raíz cuadrada de un número.
Lanza una excepción personalizada si el número es negativo.
"""
try:
# Verificar si el número es negativo
if numero < 0:
# Lanza la excepción personalizada con un mensaje detallado
raise NegativeNumberError(numero)
# Calcular la raíz cuadrada
resultado = math.sqrt(numero)
print(f"La raíz cuadrada de {numero} es: {resultado}")
return resultado
except NegativeNumberError as ne:
# Maneja la excepción personalizada e imprime un mensaje detallado
print(f"Error: {ne}")
except TypeError:
# Captura el error si el tipo de dato no es numérico
print("Error: El valor ingresado debe ser un número.")
except Exception as e:
# Captura cualquier otro error inesperado
print(f"Ha ocurrido un error inesperado: {e}")
# Ejemplo de uso
try:
entrada = float(input("Ingrese un número para calcular su raíz cuadrada: ")) # Solicita un número al usuario
calcular_raiz_cuadrada(entrada)
except ValueError:
# Captura si el usuario ingresa algo que no se puede convertir a un número
print("Error: Debe ingresar un número válido.")