Dates

Dissenya les funcions següents i desa-les al mòdul dates (fitxer dates.py):

  1. La funció edat() que rep com a paràmetres la data de naixement d’una persona i la data actual, i a partir d’aquestes dues dates calcula quants anys té la persona que és el resultat que retorna.

    Cada data es representa mitjançant tres enters (int), el dia, el mes i l’any.

    Per exemple:

    >>> e = edat(10, 4, 1990, 23, 5, 2013)
    >>> e
    23
    >>> e = edat(10, 4, 1990, 5, 3, 2013)
    >>> e
    22
    

    Pots descarregar el fitxer amb tests test-dates1.txt

  2. La funció completa_any() que rep com a paràmetre un any i un segle. El valor de l’any està entre 0 i 99, és a dir, no conté el segle. La funció retorna l’any complet calculat afegint el segle a l’any.

    Per exemple:

    >>> a = completa_any(57, 20)
    >>> a
    1957
    >>> a = completa_any(16, 21)
    >>> a
    2016
    

    Pots descarregar el fitxer amb tests test-dates2.txt

  3. La funció edat_21() que rep les mateixes dades que la funció edat de més amunt, i calcula l’edat d’una persona igual que ho fa edat. L’única diferència és que els anys de les dates poden ser complets, amb el segle, o sense el segle. Suposarem que els anys sense segle (entre 0 i 99) corresponen al segle XXI.

    Per resoldre aquesta funció heu de cridar les funcions edat i completa_any que heu resolt prèviament.

    Per exemple:

    >>> e = edat_21(10, 4, 1990, 23, 5, 13)
    >>> e
    23
    >>> e = edat_21(10, 4, 3, 5, 3, 2013)
    >>> e
    9
    

    Pots descarregar el fitxer amb tests test-dates3.txt

  4. La funció compara_dates() que donats 6 enters dia1, mes1, any1, dia2, mes2 i any2, que representen dues dates, retorni -1 si la primera data és anterior a la segona, 0 si coincideixen i 1 si la primera data és posterior a la segona.

    Per exemple:

    >>> c = compara_dates(10, 4, 1917, 8, 2, 1923)
    >>> c
    -1
    >>> c = compara_dates(10, 4, 1917, 8, 4, 1917)
    >>> c
    1
    >>> c = compara_dates(10, 4, 1917, 10, 4, 1917)
    >>> c
    0
    

    Pots descarregar el fitxer amb tests test-dates4.txt

  5. Les funcions data_anterior(), data_igual() i data_posterior() que donades dues dates retornin True si la primera data és anterior, igual o posterior a la segona respectivament. Altrament han de retornar False.

    Per resoldre aquestes funcions heu de cridar la funció compara_dates.

    Per exemple:

    >>> c = data_anterior(10, 4, 1917, 8, 2, 1923)
    >>> c
    True
    >>> c = data_igual(10, 4, 1917, 8, 2, 1923)
    >>> c
    False
    >>> c = data_posterior(10, 4, 1917, 8, 2, 1923)
    >>> c
    False
    
    >>> c = data_anterior(10, 4, 1917, 8, 4, 1917)
    >>> c
    False
    >>> c = data_igual(10, 4, 1917, 8, 4, 1917)
    >>> c
    False
    >>> c = data_posterior(10, 4, 1917, 8, 4, 1917)
    >>> c
    True
    
    >>> c = data_anterior(10, 4, 1917, 10, 4, 1917)
    >>> c
    False
    >>> c = data_igual(10, 4, 1917, 10, 4, 1917)
    >>> c
    True
    >>> c = data_posterior(10, 4, 1917, 10, 4, 1917)
    >>> c
    False
    

    Pots descarregar el fitxer amb tests test-dates5.txt

Solució

Disposeu de solucions al fitxer dates.py