0455 - Calendar1

De la Universitas MediaWiki

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

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." și programul afișează pe ecran numerele ziua luna anul, separate prin exact un spaţiu, reprezentând data zilei următoare. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."

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

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.")