Compres *(4 punts)* =================== #. Representem una compra com un string que conté, separat per ``:``, el nom d'un producte, el preu unitari acabat en ``€`` i el nombre d'unitats. El preu unitari és un nombre real amb coma decimal. Per exemple, a la compra .. code-block:: python 'Poma:0,70€:3' el producte és ``Poma``, el preu unitari és ``0,70€`` i s'han comprat ``3`` unitats. Dissenya la funció ``extreu_dades`` que donat un string amb el format anterior, retorna una tupla amb el preu unitari sense el símbol ``€`` com a float i el nombre d'unitats com a enter. Si el string no conté exactament dos caràcters ``:``, la funció ha de retornar la tupla buida. Desa la funció al fitxer :file:`compres.py`: Els següents doctests mostren exemples del que ha de fer la funció: .. literalinclude:: test-extreu-dades.txt :language: python3 :lines: 3-6 Disposes de més tests al fitxer :download:`test-extreu-dades.txt` #. Dissenya la funció ``compara_compres`` que donats dos strings que representen compres amb el format anterior i una tolerància (float), determina si hi ha algun error o si són iguals o diferents. Concretament, retorna un string segons les regles següents: * Retorna ``'error'`` si alguna de les dues compres no conté exactament dues vegades el caràcter ``:``. * Retorna ``'igual'`` si els imports totals de les dues compres són iguals amb la tolerància donada. * Altrament, retorna ``'diferent'``. Aquesta funció ha de cridar a la funció ``extreu_dades``. Desa la funció al fitxer :file:`compres.py`: Els següents doctests mostren exemples del que ha de fer la funció: .. literalinclude:: test-compara-compres.txt :language: python3 :lines: 3-8 Disposes de més tests al fitxer :download:`test-compara-compres.txt` #. Dissenya la funció ``transforma_compres`` que donada una llista de compres amb el format anterior, una compra de referència (string) i una tolerància (numèrica), **modifica** la llista de manera que cada compra es substitueix segons les regles següents: * Si la comparació amb la referència determina que hi ha error, s'ha de substituir per ``'error'``. * Si la comparació amb la referència determina que són iguals, s'ha de substituir pel string original seguit de ``*``. Si no es compleix cap d'aquestes condicions, la compra no es modifica. Aquesta funció ha de cridar la funció ``compara_compres``. Desa la funció al fitxer :file:`compres.py`: Els següents doctests mostren exemples del que ha de fer la funció: .. literalinclude:: test-transforma-compres.txt :language: python3 :lines: 3-11 Disposes de més tests al fitxer :download:`test-transforma-compres.txt` Disposes de solucions al fitxer :download:`compres.py`.