-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcalendrier.py
More file actions
71 lines (55 loc) · 2.29 KB
/
calendrier.py
File metadata and controls
71 lines (55 loc) · 2.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# Calendrier perpétuel
# Conversion d'un script initialement écrit en Basic Atmos
# paru dans "102 programmes pour l'Oric Atmos" en 1984
import calendar
# L'année est bissextile ?
def est_bissextile(annee):
return (annee % 4 == 0 and annee % 100 != 0) or (annee % 400 == 0)
# Fonction qui fait les calculs et affiche le calendrier
def calendrier_perpetuel(annee, mois):
jours_du_mois_31 = [1, 3, 5, 7, 8, 10, 12]
jours_du_mois_30 = [4, 6, 9, 11]
if mois == 2 and est_bissextile(annee):
jours_du_mois = 29
else:
jours_du_mois = 31 if mois in jours_du_mois_31 else (30 if mois in jours_du_mois_30 else 28)
premier_jour, _ = calendar.monthrange(annee, mois)
print("\nLUN MAR MER JEU VEN SAM DIM\n")
for jour in range(1, jours_du_mois + 1):
if jour == 1:
# Aligner le premier jour du mois avec le bon jour de la semaine
print(" " * premier_jour, end="")
print(f"{jour:3}", end=" ")
premier_jour = (premier_jour + 1) % 7
if premier_jour == 0:
print()
# Programme principal
print("Calendrier perpétuel\n\n")
print("Conversion d'un script initialement écrit en Basic Atmos")
print("et paru dans \"102 programmes pour l'Oric Atmos\" en 1984")
print("Indiquez 0 comme réponse pour quitter le programme.\n\n")
while True:
try:
annee = int(input("Indiquez une année (après 1582): "))
except ValueError as e:
print("Vous devez choisir une année après 1582. - %s" % e)
else:
if annee >= 1582:
while True:
try:
mois = int(input("Indiquez un mois (entre 1 et 12): "))
except ValueError as e:
print("Vous devez choisir un mois entre 1 et 12. - %s" % e)
else:
if 1 <= mois <= 12:
print(calendrier_perpetuel(int(annee), int(mois)), "\n\n")
break
elif mois == 0:
break
else:
print("Le mois doit être un nombre entre 1 et 12\n")
elif annee == 0:
break
else:
print("L'année doit être postérieure à 1582\n")
print("\n\n")