Curses

Deseu totes les funcions d’aquest problema al mateix fitxer anomenat curses.py.

Disposeu de la funció segons que, donat un temps expressat en hores, minuts i segons, retorna el seu valor expressat en segons. També de la funció hms que, donat un temps expressat en segons, retorna el seu valor expressat en hores, minuts i segons:

def segons(hora, minut, segon):
    return hora * 3600 + minut * 60 + segon

def hms(segons):
    hores = segons // 3600
    resta = segons % 3600
    minuts = resta // 60
    segons = resta % 60
    return hores, minuts, segons

Nota

Copieu i enganxeu el codi de les funcions segons i hms al començament del fitxer curses.py.

Dissenyeu les següents funcions fent ús al seu codi de crides a les anteriors i també a les que definiu:

  1. Dissenyeu la funció difer_s(h1, m1, s1, h2, m2, s2) que, donats dos temps expressats en hores, minuts i segons, retorni la diferència de temps entre els dos expressada en segons (en valor absolut).

    Exemples:

    >>> difer_s(3, 23, 17, 3, 34, 1)
    644
    >>> difer_s(3, 23, 17, 3, 23, 16)
    1
    >>> difer_s(3, 23, 17, 3, 24, 17)
    60
    >>> difer_s(4, 0, 0, 3, 56, 31)
    209
    

    Nota

    Podeu descarregar el fitxer amb tests difer_s.txt.

  2. Dissenyeu la funció difer_hms(h1, m1, s1, h2, m2, s2) que, donats dos temps expressats en hores, minuts i segons, retorni la diferència de temps entre els dos expressada en hores, minuts i segons.

    Exemples:

    >> difer_hms(3, 23, 17, 3, 34, 1)
    (0, 10, 44)
    >>> difer_hms(3, 23, 17, 3, 23, 16)
    (0, 0, 1)
    >>> difer_hms(3, 23, 17, 3, 24, 17)
    (0, 1, 0)
    >>> difer_hms(4, 0, 0, 3, 56, 31)
    (0, 3, 29)
    

    Nota

    Podeu descarregar el fitxer amb tests difer_hms.txt.

  3. Dissenyeu la funció mitjana3_s(h1, m1, s1, h2, m2, s2, h3, m3, s3) que, donats tres temps expressats en hores, minuts i segons, retorni un enter amb la mitjana de temps de les tres curses expressada en segons.

    Exemples:

    >>> mitjana3_s(3, 44, 13, 3, 51, 20, 4, 1, 14) 
    13935
    >>> mitjana3_s(3, 44, 13, 3, 44, 13, 3, 44, 13) 
    13453
    >>> mitjana3_s(3, 50, 10, 4, 0, 10, 3, 55, 10) 
    14110
    >>> mitjana3_s(3, 59, 14, 4, 1, 14, 4, 0, 14) 
    14414
    

    Nota

    Podeu descarregar el fitxer amb tests mitjana3_s.txt.

  4. Dissenyeu la funció mitjana3_hms(h1, m1, s1, h2, m2, s2, h3, m3, s3) que, donats tres temps expressats en hores, minuts i segons, retorni la mitjana de temps de les tres curses expressada en hores, minuts i segons.

    Exemples:

    >>> mitjana3_hms(3, 44, 13, 3, 51, 20, 4, 1, 14) 
    (3, 52, 15)
    >>> mitjana3_hms(3, 44, 13, 3, 44, 13, 3, 44, 13) 
    (3, 44, 13)
    >>> mitjana3_hms(3, 50, 10, 4, 0, 10, 3, 55, 10) 
    (3, 55, 10)
    >>> mitjana3_hms(3, 59, 14, 4, 1, 14, 4, 0, 14) 
    (4, 0, 14)
    

    Nota

    Podeu descarregar el fitxer amb tests mitjana3_hms.txt.

Solucions

Disposeu de solucions al fitxer curses.py