1. Astronautes

Al fitxer astronautes.py, trobareu la implementació de la classe Astronauta especificada a continuació. No l’heu de tornar a implementar, només l’heu d’utilitzar en els dos exercicis següents. Els dos exercicis són independents.

class Astronauta(nom, data_naixement, temps_min)

Crea una instància de la classe que representa un/a astronauta a partir del seu nom, data de naixement i temps mínim d’entrenament diari recomanat expressat en minuts.

Atributs

nom

El nom de l’astronauta (str).

naix

La data de naixement de l’astronauta (datetime.date).

temps_min

El mínim temps d’entrenament diari recomanat a l’astronauta, expressat en minuts (int)

Mètodes

temps_max()

Retorna el màxim temps d’entrenament diari recomanat a l’astronauta, calculat a partir del temps mínim i la data de naixement (int).

Aquesta classe suporta les operacions següents:

Operació

Resultat

str(a)

Retorna l’expressió «Astronauta: nom - naix» on nom és el nom de l’astronauta i naix la seva data de naixement en format dd/mm/aaaaa.

1.1. Edat futura (2.5 punts)

Al fitxer edat_futura.py implementeu la funció edat_futura() especificada a continuació que, donada una instància de la classe Astronauta i donada una instància de la classe datetime.date, retorna l’edat que tindrà l’astronauta en aquella data.

edat_futura.edat_futura(astro, data_futur)
Paràmetres:
Retorna:

l’edat que tindrà l’astronauta a la data futura (int).

Nota: Podeu calcular l’edat com la part entera dels dies viscuts dividits per 365.25

Vegeu per exemple:

>>> edat_futura(Astronauta('Fina', date(2000, 2, 12), 360), date(2034, 2, 11))
33
>>> edat_futura(Astronauta('Kim', date(2012, 5, 10), 340), date(2073, 12, 23))
61

Disposeu de més jocs de prova al fitxer tests-edat_futura.txt.

1.2. Més entrenament (2.5 punts)

Al fitxer mes_entrenament.py implementeu la funció mes_entrenament() especificada a continuació que, donada una llista d’instancies de la classe Astronauta, i un valor llindar de minuts d’entrenament, retorna l’expressió str(astro) on astro és el nom del primer astronauta de la llista que té un temps màxim d’entrenament inferior al valor llindar. Si no n’hi ha cap, la funció retorna el str buit.

mes_entrenament.mes_entrenament(llista, llindar)
Paràmetres:
  • llista – una llista d’astronautes (list de Astronauta)

  • llindar – nombre de mínuts (int)

Retorna:

l’expressió str(astro) on astro és el primer astronauta de la llista que té un temps màxim d’entrenament diari inferior a llindar o “” si no n’hi ha cap.

Nota: Cal utilitzar el mètode temps_max() i la funció str().

Vegeu per exemple:

>>> l = [Astronauta('Roger', date(2012, 3, 31), 200), Astronauta('Maria', date(1996, 5, 10), 250)]
>>> mes_entrenament(l, 601)
'Astronauta: Roger - 31/03/2012'
>>> mes_entrenament(l, 501)
'Astronauta: Maria - 10/05/1996'
>>> mes_entrenament(l, 200)
''

Disposeu de més jocs de prova al fitxer tests-mes_entrenament.txt.