0455 - Calendar1
Cerință
Se citesc 3 numere naturale ziua luna anul, reprezentând o dată calendaristică corectă, în format zi luna an. Să se afişeze data zilei următoare.
Date de intrare
Programul citește de la tastatură numerele: zi luna an.
Date de ieșire
Programul afișează pe ecran numerele ziua luna anul, separate prin exact un spaţiu, reprezentând data zilei următoare.
Restricții de precizări
- data calendaristică citită corect
Exemplul 1
- Intrare
- 28
- 2
- 2000
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 29
- 2
- 2000
Rezolvare
Rezolvare ver. 1
<syntaxhighlight lang="python" line="1" start="1"> def validare(zi, luna, an):
return zi.isdigit() and 1 <= int(zi) <= 31 and luna.isdigit() and 1 <= int(luna) <= 12 and an.isdigit()
def data_zilei_urmatoare(zi, luna, an): #calculăm data zilei următoare
if (an % 4 == 0 and an % 100 != 0) or (an % 400 == 0): #verificăm dacă anul este bisect sau nu bisect = True else: bisect = False
- definim lunile și din câte zile este formată
zile_luna = { 1: 31, 2: 29 if bisect else 28, 3: 31, 4: 30, 5: 31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31 }
if zi == zile_luna[luna]: #verificăm ultima zi a lunii, urmatoarea lună este = luna curentă + 1 la fel cu anul următor și cu zilele ziua_urmatoare = 1 if luna == 12: luna_urmatoare = 1 anul_urmator = an + 1 else: luna_urmatoare = luna + 1 anul_urmator = an else: ziua_urmatoare = zi + 1 luna_urmatoare = luna anul_urmator = an
return ziua_urmatoare, luna_urmatoare, anul_urmator
if __name__ == '__main__':
zi = input("Introduceți ziua: ") luna = input("Introduceți luna: ") an = input("Introduceți anul: ")
if validare(zi, luna, an): zi, luna, an = int(zi), int(luna), int(an) print("Datele introduse corespund restricțiilor impuse.") ziua_urmatoare, luna_urmatoare, anul_urmator = data_zilei_urmatoare(zi, luna, an) print(ziua_urmatoare, luna_urmatoare, anul_urmator, sep="\n") else: print("Datele introduse nu corespund restricțiilor impuse.")
</syntaxhighlight>