#Corrigé exercice 4
def est_palindrome(mot :str)->bool:
    i=0
    j = len(mot) - 1
    while i<=j and mot[i]==mot[j]:
        i=i+1
        j=j-1
    if i>j:
        return True
    return False

#Corrigé exercice 6    
def bissextile(annee):

    if annee%400 ==0:
        return True
    elif annee%4==0:
        if not annee%100==0:
            return True
    return False
    
## on teste quelques exemples
assert bissextile(2020)
assert not bissextile(1400)
assert bissextile(1600)
assert not bissextile(2030)


def nb_jours_ecoules(j,m,a):
    if bissextile(a):
        Mois = [31,29,31,30,31,30,31,31,30,31,30,31]
    else:
        
        Mois = [31,28,31,30,31,30,31,31,30,31,30,31]
    nb = 0
    for i in range(1,m):
        nb += Mois[i-1]
    return nb + j

## on teste quelques exemples
assert nb_jours_ecoules(10,2,2026)==41
assert nb_jours_ecoules(28,2,2026)==59
assert nb_jours_ecoules(13,3,2024)==73
print(nb_jours_ecoules(16,9,2026))

def nb_jours_depuis_2020(j,m,a):
    nb = 0
    #on calcule le nombre de jours depuis 2020 jusqu'à lannée 
    # précédant l'année a
    for i in range(2020,a):
        if bissextile(i):
            nb += 366
        else:
            nb += 365
    #on ajoute les jours écoulés de l'année en cours
    nb += nb_jours_ecoules(j,m,a)
    return nb

def nb_jours_depuis_annee(j,m,a,depart):
    """
    On généralise la fonction nb_jours_depuis_2020
    Le calcul s'effectue ici depuis le 1er janvier    
    
     de l'année depart
    """
    assert a> depart ,"l'année de départ doit être  antérieure à l'année courante a"
    nb = 0
    #on calcule le nombre de jours depuis 2020 jusqu'à lannée 
    # précédant l'année a
    for i in range(depart,a):
        if bissextile(i):
            nb += 366
        else:
            nb += 365
    #on ajoute les jours écoulés de l'année en cours
    nb += nb_jours_ecoules(j,m,a)
    return nb

##on teste quelques exemples
assert nb_jours_depuis_2020(10,2,2026)==2233
assert nb_jours_depuis_annee(10,2,2026,2025)==406
print(nb_jours_depuis_2020(16,9,2026))