def fact(n):
    if n <= 1: return 1
    return n * fact(n-1)

# Couleurs ANSI
C_BOLD = "\x1b[97m"
C_GREEN = "\x1b[92m"
C_RED = "\x1b[31m"
C_RESET = "\x1b[0m"

print(C_GREEN + "========================")
print(" CALCUL DE FACTORIELLE")
print("========================" + C_RESET)
print()

try:
    texte = input(C_BOLD + "Entrez un entier positif : " + C_RESET)
    n = int(texte)
    if n < 0:
        print(C_RED + "Erreur : le nombre doit etre positif." + C_RESET)
    else:
        resultat = fact(n)
        print("\nFactorielle({}) = " + C_BOLD + "{}" + C_RESET).format(n, resultat)
except ValueError:
    print(C_RED + "Erreur : ceci n'est pas un entier valide." + C_RESET)
except Exception as e:
    print(C_RED + "Erreur inattendue :", e, C_RESET)

print("\n" + C_GREEN + "Fin du programme." + C_RESET)
