Quick actions

cmd+k|ctrl+k

Navigation

Languages

5_14_Excepciones_desafio_3

Snippet info

Language

Python

Visibility

public

Author

jorgetoto2006new

Created

2024-11-04T01:50:34.242674Z

Updated

2024-11-04T01:50:34.242674Z

def calcular_factorial(numero):
    """
    Calcula el factorial de un número entero positivo.
    Maneja excepciones si el número es negativo, no es un entero, o es muy grande.
    """
    try:
        # Verificar si el número es un entero
        if not isinstance(numero, int):
            raise TypeError("El número debe ser un entero.")
        
        # Verificar si el número es negativo
        if numero < 0:
            raise ValueError("El número no puede ser negativo para calcular el factorial.")
        
        # Verificar si el número es demasiado grande para ser procesado
        if numero > 1000:  # Este límite es arbitrario; en la práctica, se puede ajustar según el contexto
            raise OverflowError("El número es demasiado grande para calcular el factorial.")
        
        # Calcular el factorial de forma iterativa
        factorial = 1
        for i in range(1, numero + 1):
            factorial *= i  # Multiplicación acumulativa
        
        # Imprimir y devolver el resultado del factorial
        print(f"El factorial de {numero} es: {factorial}")
        return factorial
    
    except TypeError as te:
        # Captura si el tipo de dato no es un entero
        print(f"Error de tipo: {te}")
    except ValueError as ve:
        # Captura si el número es negativo
        print(f"Error de valor: {ve}")
    except OverflowError as oe:
        # Captura si el número es demasiado grande y podría causar problemas de memoria o tiempo de procesamiento
        print(f"Error de desbordamiento: {oe}")
    except Exception as e:
        # Captura cualquier otro error inesperado
        print(f"Ha ocurrido un error inesperado: {e}")

# Ejemplo de uso
try:
    entrada = int(input("Ingrese un número entero positivo: "))  # Solicita un número al usuario
    calcular_factorial(entrada)
except ValueError:
    # Captura si el usuario ingresa algo que no se puede convertir a un entero
    print("Error: Debe ingresar un número entero válido.")
INFO