Botiga de roba¶
Una empresa de fabricació de roba utilitza un diccionari per cada botiga on emmagatzema informació sobre l’estoc disponible. Concretament cada clau és una tupla formada pel codi del model, la talla i el color (tots tres strings) i el valor associat és el nombre de peces d’aquest model, talla i color que hi ha a la botiga.
Guarda totes les funcions en un mateix fitxer amb el nom botigaroba.py.
Dissenya la funció
incrementa_estoc()que donat un diccionari amb l’estoc d’una botiga, tres strings que indiquen un model, una talla i un color, respectivament, i un enter que especifica una quantitat de peces, modifica el diccionari afegint aquesta quantitat de peces per al model, talla i color indicat.>>> d = {('Pan85', 'XS','negre'):100,('Pan85','S','negre'):300, ... ('Pan85','XS','blau'):6,('Pan87','S','blau'):5, ... ('Pan87','L','blau'):12} >>> incrementa_estoc(d,'Pan85','S','negre',10) >>> d == {('Pan85', 'XS','negre'):100,('Pan85','S','negre'):310, ... ('Pan85','XS','blau'):6,('Pan87','S','blau'):5, ... ('Pan87','L','blau'):12} True >>> incrementa_estoc(d,'Pan85','M','negre',10) >>> d == {('Pan85', 'XS','negre'):100,('Pan85','S','negre'):310, ... ('Pan85','XS','blau'):6,('Pan87','S','blau'):5, ... ('Pan87','L','blau'):12,('Pan85','M','negre'):10} True
Nota
Podeu baixar el fitxer amb tests
botiga1.txtDissenya la funció
decrementa_estocque donat un diccionari amb l’estoc d’una botiga, tres strings que indiquen un model, una talla i un color, respectivament, i un enter que especifica una quantitat de peces, modifica el diccionari treient aquesta quantitat de peces per al model, talla i color indicat. Suposarem que al diccionari sempre hi ha peces suficients per restar la quantitat indicada.>>> d = {('Pan85', 'XS','negre'):100,('Pan85','S','negre'):300, ... ('Pan85','XS','blau'):6,('Pan87','S','blau'):5, ... ('Pan87','L','blau'):12} >>> decrementa_estoc(d,'Pan85','XS','blau',2) >>> d == {('Pan85', 'XS','negre'):100,('Pan85','S','negre'):300, ... ('Pan85','XS','blau'):4,('Pan87','S','blau'):5, ... ('Pan87','L','blau'):12} True
Nota
Podeu baixar el fitxer amb tests
botiga2.txtDissenya la funció
estoc_baixque donat un diccionari amb l’estoc d’una botiga i un entern, retorna una llista amb les peces amb un estoc menor quen. Cada model estarà representat per una tupla amb el model, la talla i el color.>>> d = {('Pan85', 'XS','negre'):100,('Pan85','S','negre'):300, ... ('Pan85','XS','blau'):6,('Pan87','S','blau'):5, ... ('Pan87','L','blau'):12,('Pan85','M','blanc'):6, ... ('Pan85','L','blanc'):5,('Cam23','XL','blanc'):12} >>> lresultat = estoc_baix(d,10) >>> lresultat.sort() >>> lresultat == [('Pan85','L','blanc'), ('Pan85','M','blanc'), ... ('Pan85','XS','blau'), ('Pan87','S','blau')] True
Nota
Podeu baixar el fitxer amb tests
botiga3.txtDissenya la funció
actualitza_estocque donat un diccionari amb l’estoc d’una botiga, una llista de vendes, i una llista de reposició, modifica el diccionari restant les vendes de la primera llista i sumant els afegits de la segona. A les dues llistes cada element és una altra llista que conté tres strings indicant un model, un color i una talla, respectivament, i un enter que indica la quantitat venuda o afegida a l’estoc. Aquesta funció ha d’utilitzar les funcionsincrementa_estocidecrementa_estocsdissenyades als apartats anteriors.>>> d = {('Pan85', 'XS','negre'):100,('Pan85','S','negre'):300, ... ('Pan85','XS','blau'):6,('Pan87','S','blau'):5, ... ('Pan87','L','blau'):12,('Pan85','M','blanc'):6, ... ('Pan85','L','blanc'):5,('Cam23','XL','blanc'):12} >>> lvendes = [['Pan87','S','blau',3],['Cam23','XL','blanc',9], ... ['Pan87','L','blau',1]] >>> lrepo = [['Pan87','L','blau',5],['Cam23','S','blau',5]] >>> actualitza_estoc(d,lvendes,lrepo) >>> d == {('Pan85', 'XS','negre'):100,('Pan85','S','negre'):300, ... ('Pan85','XS','blau'):6,('Pan87','S','blau'):2, ... ('Pan87','L','blau'):16,('Pan85','M','blanc'):6, ... ('Pan85','L','blanc'):5,('Cam23','XL','blanc'):3, ... ('Cam23','S','blau'):5} True
Nota
Podeu baixar el fitxer amb tests
botiga4.txt
Solució
Disposeu de solucions al fitxer botigaroba.py.