Perfums¶
L’empresa FLAIRES S.A. disposa d’informació sobre els perfums que
fabrica emmagatzemada en una llista de llistes on a cada subllista hi
ha informació sobre un perfum: nom del perfum (string), nom del tipus
de perfum (un string que pot ser 'PARFUM', 'EAU_PARFUM',
'EAU_TOILETTE' o bé 'EAU_COLOGNE'), contingut en ml (enter) i
preu en euros (numèric). Es demana que dissenyeu un seguit de
funcions, que haureu de desar al fitxer perfums.py
- perfums.creaperfums1(lperfums)¶
Donada una llista de perfums com la descrita, retorna un diccionari a on cada clau és un contingut en ml i cada valor una llista amb els noms dels perfums amb aquest contingut:
>>> l = [['Rochis1', 'EAU_TOILETTE',100,78],['Rochis2','EAU_TOILETTE',50,42], ... ['Challenge','EAU_PARFUM',100,78],['Gege','EAU_COLOGNE',200,43]] >>> d = creaperfums1(l) >>> d == {100:['Rochis1','Challenge'], 50:['Rochis2'], 200:['Gege']} True
Nota
Podeu descarregar el fitxer amb tests test_creaperfums1.txt.
- perfums.creaperfums2(lperfums)¶
Donada una llista de perfums com la descrita, retorna un diccionari a on cada clau és un contingut en ml i cada valor una llista de llistes amb els noms dels perfums amb aquest contingut i el seu preu:
>>> l = [['Rochis1', 'EAU_TOILETTE',100,78],['Rochis2','EAU_TOILETTE',50,42], ... ['Challenge','EAU_PARFUM',100,82],['Gege','EAU_COLOGNE',200,43]] >>> d = creaperfums2(l) >>> d == {100:[['Rochis1',78],['Challenge',82]], 50:[['Rochis2',42]], ... 200:[['Gege',43]]} True
Nota
Podeu descarregar el fitxer amb tests test_creaperfums2.txt.
- perfums.espotcomprar1(perfums, euros)¶
Donat un diccionari com el retornat per la funció crea_perfums2 i una quantitat d’euros, volem saber si hi ha algun perfum al diccionari que es pugui comprar amb aquesta quantitat.
Per fer-ho, es demana en primer lloc una funció
hi_ha_perfum(), que donada una llista de subllistes de dos elements (un string i un enter que representen respectivament, el nom del perfum i el preu) i un enter anomematquantretornaTruesi hi ha algun perfum en la llista amb un preu inferior aquantiFalseen cas contrari.Utilitzant aquesta funció, implementa
espotcomprar1()que retornaTruesi al diccionari donat hi ha algun perfum que es pugui comprar amb aquesta quantitat iFalseen cas contrari:>>> l=[['Rochis1',73],['Challenge',82], ['Rochis2',42],['Gege',43]] >>> hi_ha_perfum(l, 50) True >>> hi_ha_perfum(l, 40) False >>> d = {100:[['Rochis1',78],['Challenge',82]], ... 50:[['Rochis2',42]],200:[['Gege',43]]} >>> espotcomprar1(d,50) True >>> espotcomprar1(d,25) False
Nota
Podeu descarregar el fitxer amb tests
test_espotcomprar1.txt.
- perfums.espotcomprar2()¶
Donat un diccionari com el retornat per la funció crea_perfums2 i una quantitat en euros, retorna una llista amb els noms dels perfums que tenen un preu que no supera aquesta quantitat. La llista ha d’estar ordenada alfabèticament.
En aquest cas, implementa una funció
hi_ha_perfum2()que a partir d’una llista de subllistes de dos elements (nom i preu dels perfums) i d’un enter retorna la llista de tots els perfums que tenen un preu inferior a aquesta quantitat. Igual que en l’apartat anterior, fes servir aquest funció per implementar crea_perfums2. La llista ha d’estar ordenada alfabèticament:>>> l=[['Rochis1',73],['Challenge',82], ['Rochis2',42],['Gege',43]] >>> hi_ha_perfum2(l, 50) ['Gege', 'Rochis2'] >>> hi_ha_perfum2(l, 80) ['Gege', 'Rochis1', 'Rochis2'] >>> hi_ha_perfum2(l, 40) [] >>> d = {100:[['Rochis1',78],['Challenge',82]], ... 50:[['Rochis2',42]],200:[['Gege',43]]} >>> espotcomprar2(d,50) ['Gege', 'Rochis2'] >>> espotcomprar2(d,25) []
Nota
Podeu descarregar el fitxer amb tests
test_espotcomprar2.txt.
Solució
Disposeu d’una solució al fitxer perfums.py.