1. 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'Poma:0,70€:3'el producte és
Poma, el preu unitari és0,70€i s’han comprat3unitats.Dissenya la funció
extreu_dadesque 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
compres.py:Els següents doctests mostren exemples del que ha de fer la funció:
>>> extreu_dades('Poma:0,70€:3') (0.7, 3) >>> extreu_dades('Poma:0,70€') ()
Disposes de més tests al fitxer
test-extreu-dades.txtDissenya la funció
compara_compresque 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
compres.py:Els següents doctests mostren exemples del que ha de fer la funció:
>>> compara_compres('Poma:0,70€:3', 'Pera:2,10€:1', 0.000001) 'igual' >>> compara_compres('Iogurt:2,00€:2', 'Formatge:2,30€:3', 0.01) 'diferent' >>> compara_compres('Poma:0,70€', 'Pera:2,10€:1', 0.000001) 'error'
Disposes de més tests al fitxer
test-compara-compres.txtDissenya la funció
transforma_compresque 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
compres.py:Els següents doctests mostren exemples del que ha de fer la funció:
>>> ls = ['Poma:0,70€:3', 'Pera:1,50€:2', 'Poma:2,10€:1'] >>> transforma_compres(ls, 'Poma:2,10€:1', 0.000001) >>> ls ['Poma:0,70€:3*', 'Pera:1,50€:2', 'Poma:2,10€:1*'] >>> ls = ['Suc:0,10€:3', 'Aigua:0,30€:1', 'Aigua:0,30€'] >>> transforma_compres(ls, 'Ref:0,30€:1', 0.001) >>> ls ['Suc:0,10€:3*', 'Aigua:0,30€:1*', 'error']
Disposes de més tests al fitxer
test-transforma-compres.txtDisposes de solucions al fitxer
compres.py.