4. Avaluació de caixes de petards¶
Una empresa fabrica caixes de petards amb diferents tipus segons la categoria de soroll que fan: baix, mig o alt. Les quantitats de cada categoria que hi ha dins una caixa es representen amb un inventari de caixa que és un diccionari a on les claus son categories i els valors son el nombre de petards de cadascuna a la caixa. Per exemple:
{'baix': 40, 'mig': 70, 'alt': 20}
A més, existeix un diccionari de màxims que té la mateixa estructura que l’anterior però amb els valors representant els màxims de soroll permesos per a cada categoria:
{'baix': 50, 'mig': 80, 'alt': 100}
Dissenya la següent funció i desa-la al fitxer soroll.py:
- soroll.supera_soroll(d, dmaxims)¶
Comprova si alguna categoria de soroll ha superat el màxim permès.
Per exemple:
>>> supera_soroll({'baix': 40, 'mig': 90, 'alt': 20}, {'baix': 50, 'mig': 80, 'alt': 100})
True
>>> supera_soroll({'baix': 40, 'mig': 70, 'alt': 20}, {'baix': 50, 'mig': 80, 'alt': 100})
False
Nota
Disposes de més tests al fitxer test-supera-soroll.txt.
Per valorar si una caixa és adequada, s’utilitza una puntuació de control que és més alta segons es compleixen menys criteris. Aquesta puntuació es calcula sumant punts segons els següents criteris:
1 punt si la caixa conté 200 unitats o més (excés de càrrega)
2 punts si la caixa té menys de dos petards de tipus
baixo menys de dos de tipusmigo ambdues coses.3 punts si es supera el límit de soroll en alguna categoria
Dissenya la següent funció i desa-la al fitxer soroll.py:
- soroll.avalua_caixa(d, dmaxims)¶
Avalua una caixa de petards a partir del seu resum per categoria de soroll.
Per exemple:
>>> avalua_caixa({'baix': 1, 'mig': 10, 'alt': 190}, {'baix': 50, 'mig': 80, 'alt': 100})
6
>>> avalua_caixa({'baix': 10, 'mig': 10, 'alt': 50}, {'baix': 50, 'mig': 80, 'alt': 100})
0
Nota
Disposes de més tests al fitxer test-avalua-caixa.txt.
Una caixa de petards es representa com una llista de tuples on cada tupla conté el nom d’un petard i el nombre d’unitats. Per exemple:
[('bombeta', 10), ('xino', 20), ('follonero', 60)]
Un catàleg de petards és un diccionari que associa cada nom de petard amb el seu nivell de soroll:
{'bombeta': 'baix', 'xino': 'mig', 'follonero': 'alt'}
Dissenya la següent funció i desa-la al fitxer soroll.py:
- soroll.calcula_soroll(lcaixa, cataleg, dmaxims)¶
Calcula la puntuació de validació de la caixa lcaixa segons els criteris definits.
- param list lcaixa:
Llista de tuples
(nom_petard, unitats)que defineixen la composició de la caixa.- param dict cataleg:
Diccionari que associa cada nom de petard amb el nivell de soroll (
baix,migoalt).- param dict dmaxims:
Diccionari amb els màxims permesos per cada categoria de soroll.
- return:
La puntuació total de la caixa segons les condicions de seguretat i composició.
- rtype:
int
Aquesta funció ha de cridar a la funció avalua_caixa().
Per exemple:
>>> caixa = [('bombeta', 1), ('xino', 20), ('follonero', 180)]
>>> cataleg = {'bombeta': 'baix', 'xino': 'mig', 'follonero': 'alt'}
>>> dmaxims = {'baix': 50, 'mig': 80, 'alt': 100}
>>> calcula_soroll(caixa, cataleg, dmaxims)
6
>>> caixa = [('bombeta', 10), ('xino', 20), ('follonero', 60)]
>>> calcula_soroll(caixa, cataleg, dmaxims)
0
Nota
Disposes de més tests al fitxer test-calcula-soroll.txt.
Disposes de solucions al fitxer soroll.py.