1. Primers vols

Es disposa d’una llista de companyies aèries a on cada element és una llista de vols d’una companyia amb el nom d’un destí (string) i una sèrie d’enters que indiquen hores en què hi ha vols d’aquesta companyia per a aquest destí. Per exemple, la següent llista de companyies

>>> lc = [['BCN',8,9,12,14,15,21], ['BIL',8,9,11,15,18,19,20],
... ['BCN',10,15,18,21], ['BCN',7,15,19,21]]

conté a la primera posició una llista de vols que volen a 'BCN' a les hores 8, 9, 12, 14, 15 i 21.

Addicionalment, disposen d’una llista amb els noms de les companyies, ordenada de manera que el nom de la companyia corresponent a la posició i de la llista de companyies es troba a la mateixa posició i de la llista de noms. Per exemple, donada la llista

>>> lnoms = ['AirVol','VolinAir','CatAir','CAL']

el nom de la primera companyia de la llista de companyies seria 'AirVol'.

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

primvols.primer_vol(lvols, d, h)

Retorna la primera hora en què es pot volar al destí d.

Paràmetres:
  • lvols (list) – llista de vols d’una companyia

  • d (str) – destí on es vol volar

  • h (int) – hora a partir de la que es vol volar

Tipus de retorn:

int

Retorna:

la primera hora a partir de l’hora h (inclosa) a la que es pot volar al destí d o -1 si els vols no corresponen al destí d o no hi ha cap hora per volar a partir de l’hora h donada.

Per exemple:


>>> lv = ['BCN',8,9,12,14,15,18,20,21]
>>> primer_vol(lv,'BCN',16)
18
>>> primer_vol(lv,'BCN',14)
14
>>> primer_vol(lv,'BCN',22)
-1
>>> primer_vol(lv,'SEV',14)
-1

Disposes de més tests al fitxer test-primer-vol.txt.

primvols.ordena(l)

Modifica la llista l de manera que l’ordre de les tuples és ascendent segons l’hora de sortida.

Paràmetres:

l (list(tuple(str, int))) – llista de tuples a on el primer element és el nom d’una companyia i el segon una hora de sortida.

Per exemple:


>>> l = [('CAL', 19), ('AirVol', 21), ('CatAir', 18)]
>>> ordena(l)
>>> l
[('CatAir', 18), ('CAL', 19), ('AirVol', 21)]

Disposes de més tests al fitxer test-ordena.txt.

primvols.vols(lc, d, h, lnoms)

Retorna una llista amb les companyies que volen al destí d i en tenen un vol a partir de l’hora h.

Paràmetres:
  • lc (list(list)) – llista de companyies

  • d (str) – destí on es vol volar

  • h (int) – hora a partir de la que es vol volar

  • lnoms (list(str)) – noms de les companyies

Tipus de retorn:

list(tuple)

Retorna:

una llista amb les companyies que disposen de vols que volen al destí d a partir de l’hora h. Cada element de la llista és una tupla amb el nom de la companyia i la primera hora a partir de l’hora h (inclosa) en què la companyia té un vol al destí d. El nom d’una companyia a la posició i de la llista lc es troba a la mateixa posició i de la llista lnoms. Si no hi ha cap companyia que compleixi les condicions, la funció retorna la llista buida.

Important

Aquesta funció ha de cridar a la funció primer_vol().

Per exemple:


>>> lnoms = ['AirVol','VolinAir','CatAir','CAL']
>>> lc = [['BCN',8,9,12,14,15,21], ['BIL',8,9,11,15,18,19,20],
... ['BCN',10,15,18,21], ['BCN',7,15,19,21]]

>>> vols(lc,'BCN',16,lnoms)
[('AirVol', 21), ('CatAir', 18), ('CAL', 19)]

>>> vols(lc,'SEV',12,lnoms)
[]

Disposes de més tests al fitxer test-vols.txt.