# 1) Écrire une fonction table(n) qui affiche la table de multiplication de n avec une boucle for.

def table(n):
    for i in range(1, 11):
        print(n, 'x', i, '=', i * n)

# test
table(9)

# 2) Écrire une fonction fact(n) qui retourne le n!. On utilisera une boucle for pour faire le calcul. On suppose n est
# un entier positif et on rappelle que 1! = 1 et n! = n × (n -1) × (n -2) × ... × 2 × 1. Ainsi 5! = 5×4×3×2×1 = 120.

def fact(n):
    resultat = 1
    for i in range(2, n+1):
        resultat = resultat * i
    return resultat
# test
print(fact(5))

# 3) Écrire une fonction max2(a, b) qui renvoie le plus grand des deux entiers a et b.

def max2(a, b):
    if a > b:
        return a
    else:
        return b
        
# test
print(max2(1, 2))
print(max2(-1, -2))

# 4) En se servant de la fonction max2 de l’exercice précédent, compléter la fonction max3(a, b, c) qui renvoie le
# plus grand des trois entiers a,b et c.
# def max3(a, b, c):
# return ...

def max3(a, b, c):
    return max2(a, max2(b, c))

# test
print(max3(1, 2, 3))
print(max3(-1, -2, -3))
print(max3(-1, 2, -3))

# 5) Écrire une fonction convertToSec(h, m, s) qui prend en paramètre un temps donné en heures minutes,
# secondes et qui retourne ce temps converti en secondes.

def convertToSec(h, m, s):
    return h*3600 + m*60 + s

# test
print(convertToSec(1, 1, 1))

# 6) Écrire une fonction bissextile(a) qui renvoie True si l’année a est une année bissextile, False sinon. On
# rappelle qu'une année bissextile est une année multiple de 4 mais pas de 100, ou multiple de 400.

def bissextile(a):
    return (a%4 == 0 and a%100 != 0) or a%400 == 0

# tests
print(bissextile(2025))
print(bissextile(2024))
print(bissextile(2000))
print(bissextile(2100))

# 7) Écrire une fonction nbjoursannee(a) qui renvoie le nombre de jours de l'année a, appellant la fonction
# bissextile(a) de l'exercice précédent pour savoir si l’année a est bissextile.

def nbjoursannee(a):
    if bissextile(a):
        return 366
    else:
        return 365

# tests
print(nbjoursannee(2025))
print(nbjoursannee(2024))

# 8) Écrire une fonction nbjoursmois(a, m) qui renvoie le nombre de jours dans le mois m de l’année a, appellant la
# fonction bissextile(a) pour savoir si l’année a est bissextile. On suppose que m est un entier compris entre 1 et 12.

def nbjoursmois(a, m):
    if m == 2:
        if bissextile(a):
            return 29
        else:
            return 28
    elif m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:
        return 31
    else:
        return 30
        

