#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))