Perfums 2¶
L’empresa FLAIRES S.A. disposa d’un fitxer de perfums on a cada línia
hi ha informació sobre un perfum, que consisteix en 4 dades separades
per un espai en blanc: nom del perfum, nom del tipus de perfum
(PARFUM, EAU_PARFUM, EAU_TOILETTE o bé EAU_COLOGNE), contingut en
ml i preu. Cap nom de perfum conté espais en blanc. Com a exemple,
podeu descarregar el fitxer
perfums.txt que té el següent
contingut:
Rochis1 EAU_TOILETTE 100 78
Rochis2 EAU_TOILETTE 50 42
Challenge EAU_PARFUM 100 78
Cucu PARFUM 100 78
Gege EAU_COLOGNE 200 43
Eau-de-Lachette EAU_PARFUM 50 65.5
Mumu EAU_PARFUM 30 23.5
Queque PARFUM 75 88.9
Quiqui PARFUM 30 25
Lala EAU_COLOGNE 125 37
Lolo EAU_COLOGNE 100 29.9
Eau-de-Sobaq EAU_TOILETTE 120 34.20
Desa les següens funcions al fitxer perfums.py
Dissenya la funció
decodificaque, donat com a paràmetre una cadena que conté tota la informació corresponent a un perfum (una línia del fitxer de perfums), retorni un tuple amb la següent informació: nom (string), tipus (string), contingut (enter), preu (real) i preu per ml (real). Exemples:>>> decodifica('Rochis1 EAU_TOILETTE 100 78') ('Rochis1', 'EAU_TOILETTE', 100, 78.0, 0.78) >>> decodifica('Eau-de-Lachette EAU_PARFUM 50 65.5') ('Eau-de-Lachette', 'EAU_PARFUM', 50, 65.5, 1.31)
Nota
Podeu descarregar el fitxer amb tests
test_perfum1.txtDissenya la funció
seleccionaque, donats com a paràmetres el nom d’un fitxer de perfums, un tipus de perfum i el nom d’un altre fitxer, escrigui en aquest segon fitxer el nom i el preu per ml (separats per un espai en blanc) de tots els perfums del primer fitxer que són del tipus indicat (un a cada línia). Aquesta funció ha de cridar la dissenyada a l’apartat anterior i usar adequadament el tuple que retorna. El preu per m. (real) s’ha d’escriure arrodonit a dos decimals.>>> selecciona ('perfums.txt', 'EAU_PARFUM', 'eauparfum.txt') >>> with open ('eauparfum.txt', 'r') as f: ... s = f.read() >>> s 'Challenge 0.78\nEau-de-Lachette 1.31\nMumu 0.78\n' >>> selecciona ('perfums.txt', 'EAU_COLOGNE', 'eaucologne.txt') >>> with open('eaucologne.txt', 'r') as f: ... s = f.read() >>> s 'Gege 0.21\nLala 0.3\nLolo 0.3\n'
Nota
Podeu descarregar el fitxer amb tests
test_perfum2.txtDissenya la funció
class_contingutsque, donat com a paràmetre el nom d’un fitxer de perfums (string), retorni un diccionari on la clau és un contingut (enter) i el valor una llista amb tots els noms de perfums que es presentin en aquell contingut, ordenats lèxicograficament. Aquesta funció ha de cridar la dissenyada al primer apartat i usar adequadament el tuple que retorna.>>> d = class_continguts ('perfums.txt') >>> if d != {120: ['Eau-de-Sobaq'], 50: ['Eau-de-Lachette', 'Rochis2'], ... 100: ['Challenge', 'Cucu', 'Lolo', 'Rochis1'], 200: ['Gege'], ... 75: ['Queque'], 125: ['Lala'], 30: ['Mumu', 'Quiqui']}: ... print(d)
Nota
Podeu descarregar el fitxer amb tests
test_perfum3.txt
Solucions
Disposeu de solucions al fitxer perfums.py