2. Trip Planner [6p]

L’objectiu és fer un planificador de viatge que aconselli sobre quin vehicle emprar per un desplaçament previst i mantingui actualitzat el comptador de kilòmetres realitzats.

Amb aquest objectiu es demana que al mòdul trip_planner (fitxer trip_planner.py) facis les següents funcions (es recomana que les facis en aquest ordre).

La primera funció a fer és:

calc_dist(km):
donat el float km que indica una distància en kilòmetres
retorna un str que val 'curta' si km és menor que 6.0, 'mitja' si està entre 6.0 (inclòs) i 100.0 (exclòs), 'llarga' si és 100.0 o més, i 'error' si és 0.0 o negatiu.

Per exemple:


>>> sol = calc_dist(0.0)
>>> sol
'error'

>>> sol = calc_dist(0.5)
>>> sol
'curta'

>>> sol = calc_dist(5.9)
>>> sol
'curta'

>>> sol = calc_dist(6.0)
>>> sol
'mitja'

Disposes dels tests al fitxer calc_dist-test.txt.

Un cop feta la funció anterior es demana la següent funció:

calc_vhc(dist, pluja, vent, n):
que donats
  • dist que és un str que val 'curta', 'mitja' o 'llarga'

  • pluja i vent que són ambdòs bool

  • n un int tal que \(0 < n <= 4\) que indica el nombre de persones

retorna un str que indica el vehicle recomanat segons les regles següents:
  • si la distància és 'curta' aleshores: si plou o fa vent no és aconsellable agafat la moto i aleshores si és només una persona millor 'metro' però si són dues o més aleshores millor 'taxi' perquè el poden compartir. Si no plou ni fa vent aleshores millor 'moto' si són una o dues persones però millor 'taxi' si són més de dues.

  • si la distància és 'mitja' aleshores 'moto' si són una o dues persones i no plou ni fa vent, sinó millor 'cotxe'.

  • si la distància és 'llarga' aleshores 'moto' si és només una persona i no plou ni fa vent, sinó millor 'cotxe'.

Per exemple:


>>> calc_vhc('curta', True, False, 1)
'metro'
>>> calc_vhc('curta', False, True, 2)
'taxi'
>>> calc_vhc('curta', False, False, 2)
'moto'
>>> calc_vhc('mitja', True, False, 2)
'cotxe'
>>> calc_vhc('mitja', False, False, 2)
'moto'
>>> calc_vhc('llarga', False, False, 1)
'moto'
>>> calc_vhc('llarga', False, True, 2)
'cotxe'

Disposes dels tests al fitxer calc_vhc-test.txt.

Finalment, la funció principal, que recomanem que es faci cridant a les funcions anteriors calc_dist i calc_vhc:

plan_trip(n, km, pluja, vent, km_acc):
donats
  • un int n que indica el nombre de persones

  • un float km que indica una distància en km

  • dos bool pluja, vent

  • un float km_acc tal que km_acc \(>= 0.0\) i que indica el nombre de kilòmetres acumulats fins ara

retorna dos valors:
  • un str que indica o bé el tpus de vehicle recomanat segons les regles indicades a la funció calc_vhc, o bé 'error' si n és errori (no compleix \(0 < n <= 4\)) o km és una distància errònia (no compleix \(0.0 < km\)).

  • un float amb el nombre de km acumulats calculat sumant a km_acc el resultat de km multiplicat per n. En cas d”``”error”`` retorna km_acc tal com s’ha rebut (o sigui no es suma cap km).

Per exemple:


>>> sol = plan_trip(1, 5.5, False, True, 2000.0)
>>> sol
('metro', 2005.5)

>>> sol = plan_trip(3, 0.5, False, True, 2000.0)
>>> sol
('taxi', 2001.5)

>>> sol = plan_trip(2, 5.0, False, False, 2000.0)
>>> sol
('moto', 2010.0)

Disposes dels tests al fitxer plan_trip-test.txt.

Nota

Es recomana que aquesta funció es faci cridant a les funcions anteriors calc_dist() i calc_vhc().

Solució

Disposes de d’una solució correcte al fitxer trip_planner.py.