2. Lleure [6p]¶
L’objectiu és fer un recomanador d’activitat a fer fora de la feina en funció del dia de la setmana i de l’estat d’ànim. Amb aquest objectiu es demana que al mòdul lleure (fitxer lleure.py) facis les següents funcions (es recomana que les facis en aquest ordre).
La primera funció a fer és:
Per exemple:
>>> calc_anim(101.0) (True, 'baix') >>> calc_anim(150.1) (True, 'mig') >>> calc_anim(230.0) (True, 'alt') >>> calc_anim(0.0) (False, '') >>> calc_anim(300.0) (False, '')
Disposes dels tests al fitxer calc_anim-test.txt.
Seguidament es demana la funció:
- tria_act(dia, plou, anim):
donatsretorna unstrque val, o bé'error'sidiano és un str que representa un dia ('dl','dm','dx','dj','dv','ds','dg'), o bé una activitat ('ball','copa','casa','teatre'o'festa') determinat segons les regles següents:
Si és un dia entre setmana excepte dijous aleshores: si l’ànim és mig o alt i no plou aleshores anar a ballar sinó o bé anar al teatre si no plou o be quedar-se a casa si ho fa.
Si és dijous aleshores si l’anim es baix anar a prendre una copa i sinó anar a ballar.
Si es cap de setmana aleshores: si no plou i l’anim és mig o alt s’ha de sortir de festa i sinó el millor és quedar-se a casa.
Per exemple:
>>> tria_act('dl', False, 'baix') 'teatre' >>> tria_act('dl', True, 'baix') 'casa' >>> tria_act('dj', False, 'mig') 'ball' >>> tria_act('dj', True, 'baix') 'copa' >>> tria_act('dv', True, 'mig') 'casa' >>> tria_act('dv', False, 'mig') 'festa'
Disposes de:
Les funcions
es_capde()(Truesi rep un dia del cap de setmana) ies_diari()(Truesi rep un dia entre setmana) que estan fetes al fitxerdies.py. Si les vols aprofitar només les has de copiar en el teu mòdullleure.py.Els tests al fitxer
tria_act-test.txt.
Finalment, la funció principal (es demana que la facis fent ús de les funcions anteriors):
- recomana(dia, plou, n_sero, n_mov_acc):
que donats
un
strdiaun
boolplouun
floatn_seroque indica el nivell de serotonina mesurat en ng/mlun
floatn_mov_acctal quen_mov_acc\(>= 0.0\) i que indica el nombre d’activitats que són físiques (que són'ball'i'festa') fetes fins ara.retorna dos valors:
un
strque indica:
o bé l’activitat recomanada segons les regles indicades a la funció anterior
o bé
'metge'sin_serono es troba dins l’interval 101 - 283 (no es dona que \(101.0 <= n\_sero <= 283.0\))o bé
dia_erronisidiano és un str que representa un dia ('dl','dm','dx','dj','dv','ds','dg').un
intamb el nombre d’activitats de moviment acumulades. Aquest es calcula sumant 1 el valor rebut den_mov_accsi l’activitat recomanada és'ball'o'festa'. En cas d”``”dia_erroni”`` o'metge'retornan_mov_accinalterat.
Per exemple:
>>> recomana('dl', False, 200, 40) ('ball', 41) >>> recomana('dl', False, 110, 40) ('teatre', 40) >>> recomana('dj', False, 120, 40) ('copa', 40) >>> recomana('dj', False, 100, 40) ('metge', 40) >>> recomana('ds', False, 250, 40) ('festa', 41) >>> recomana('ds', True, 250, 40) ('casa', 40) >>> recomana('d_', False, 200, 40) ('error', 40)
Disposes dels tests al fitxer recomana-test.txt.
Nota
Has de lliurar totes aquestes funcions amb el nom exacte indicat, totes en el mateix fitxer
lleure.py.
Solució
Disposes de d’una solució correcte al fitxer lleure.py.