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:
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
distque és unstrque val'curta','mitja'o'llarga'
plujaiventque són ambdòsbool
nuninttal que \(0 < n <= 4\) que indica el nombre de personesretorna unstrque 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
intnque indica el nombre de personesun
floatkmque indica una distància en kmdos
boolpluja,ventun
floatkm_acctal quekm_acc\(>= 0.0\) i que indica el nombre de kilòmetres acumulats fins araretorna dos valors:
un
strque indica o bé el tpus de vehicle recomanat segons les regles indicades a la funciócalc_vhc, o bé'error'sinés errori (no compleix \(0 < n <= 4\)) okmés una distància errònia (no compleix \(0.0 < km\)).un
floatamb el nombre de km acumulats calculat sumant akm_accel resultat dekmmultiplicat pern. En cas d”``”error”`` retornakm_acctal 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()icalc_vhc().
Solució
Disposes de d’una solució correcte al fitxer trip_planner.py.