.. module:: normalitzacio Normalització de dades ====================== Una fàbrica utilitza una màquina que es pot sobreescalfar durant el funcionament. Per controlar aquesta situació, es disposa d'un sensor de temperatura configurat amb un llindar de 75 °C. Quan la temperatura de la màquina supera aquest llindar, el sensor guarda el mesurament. Una *llista de lectures d'un dia* és una llista que conté valors numèrics de les temperatures registrades pel sensor durant aquest dia. Per exemple, a la següent llista, .. code-block:: [80, 84, 76, 80, 92] s'han registrat cinc lectures de temperatura per sobre de 75 °C. D'altra banda, definim la normalització del valor d'una temperatura segons la fórmula .. math:: \frac{temperatura - mínim}{màxim - mínim} On utilitzarem sempre 75 com a valor mínim i el màxim serà el valor més alt de totes les temperatures observades en el dia en què s'ha mesurat la temperatura. Dissenya la següent funció desa-la al fitxer ``normalitzacio.py``. .. function:: normalitza(llect_dia) Modifica la llista `llect_dia` de manera que cada element es canviï pel seu valor normalitzat i arrodonit a dos decimals. :param list[int] llect_dia: Llista de lectures d'un dia amb les temperatures. Per exemple: .. literalinclude:: test-normalitza.txt :language: pycon :lines: 3-11 .. note:: Disposes de més tests al fitxer :download:`test-normalitza.txt`. | Es disposa també d'una llista de lectures que conté les lectures del sensor organitzades per dies. Cada element és una altra llista que representa les dades d'un dia específic on el primer element és un string que indica la data (en format `YYYY-M-D`, a on el mes i el dia poden tenir un o dos dígits) i el segon és una llista de lectures d'un dia amb el format indicat anteriorment. .. literalinclude:: test-transforma.txt :language: pycon :lines: 3-8 Dissenya la següent funció desa-la al fitxer ``normalitzacio.py``. .. function:: transforma(llect) Crea una nova llista amb les lectures diàries normalitzades i la data canviada pel mes amb format de dos dígits. :param list[list] llect: Llista de lectures de diversos dies en què cada element correspon a la lectura d'un dia i és una subllista on el primer element és un string amb una data i el segon una llista de números amb temperatures. :rtype: list[list] :return: una nova llista amb la mateixa estructura que l'original, però amb la data canviada pel mes, expressat com a un string de dos dígits, i on cada temperatura s'ha normalitzat. Aquesta funció **ha de cridar** a la funció :func:`~normalitza`. Per exemple: .. literalinclude:: test-transforma.txt :language: pycon :lines: 3-17 .. admonition:: Suggeriment Fer una còpia de la llista original pot ajudar-te a resoldre aquest problema. .. note:: Disposes de més tests al fitxer :download:`test-transforma.txt`. Disposes de solucions al fitxer :download:`normalitzacio.py`.