Magatzem¶
En una botiga es ven en exclusiva roba d’una prestigiosa marca. La botiga només té en estoc alguns models de la marca però disposa del catàleg de preus de tots els productes de la marca per si n’ha d’encarregar algun. Un producte s’identifica amb el seu nom que es representa amb un string. Tots els productes que la botiga té en estoc han de ser al catàleg però no a l’inrevés.
En un mòdul
magatzem.pydissenyeu la classeMagatzemque permet representar una botiga com la descrita:- class Magatzem(catàleg={}, estoc={})¶
Atributs:
- catàleg¶
Diccionari que associa a cada producte del catàleg el seu preu
- estoc¶
Diccionari que associa a cada producte de la botiga el nombre d’unitats de què es disposa (un enter superior a 0).
Mètodes:
- producteEnCataleg(producte)¶
Retorna True si el producte és al catàleg i False en cas contrari.
- producteEnEstoc(producte)¶
Retorna True si el producte és a l’estoc i False en cas contrari.
- preuProducte(producte)¶
Retorna el preu d’un producte del catàleg. Suposeu que el producte donat és al catàleg.
- nombreUnitatsProducte(producte)¶
Retorna el nombre d’unitats del producte que hi ha en estoc. Suposeu que el producte donat és a l’estoc.
- eliminarProducteCataleg(producte)¶
Elimina el producte donat del catàleg. Suposeu que el producte donat és al catàleg. Per tal de garantir la consistència de les dades, només es poden eliminar del catàleg els productes que no són a l’estoc.
- afegirProducteCataleg(producte, preu)¶
Afegeix un nou producte al catàleg.
- eliminarProducteEstoc(producte)¶
Elimina el producte donat de l’estoc. Suposeu que el producte donat és a l’estoc.
- afegirProducteEstoc(producte, unitats)¶
Afegeix un nou producte a l’estoc. Només s’hi afegirà si el producte és un dels del catàleg.
- valorEstoc()¶
Indica el valor total de l’estoc calculat com la suma dels preus de tots els productes que hi ha al magatzem.
2. En el mòdul lamevabotiga.py dissenyeu la funció comanda(mag,
lnoms), que donada una instància a la classe magatzem i una llista de
noms de productes retorni el nombre de productes de la llista que són
del catàleg però dels quals no n’hi ha en estoc, així com la suma dels
preus unitaris d’aquests productes.
3. En el mateix modul lamevabotiga.py dissenyeu la funció
remesa(mag, lrem) que actualitzi el magatzem a partir d’una llista
de tuples representant una remesa de productes que arriba al
magatzem. Les tuples tenen dos elements: el nom i el nombre d’unitats
d’un producte. Aquesta funció ha de retornar una llista amb aquells
productes equivocats, és a dir, aquells productes que la botiga no té
en estoc. Aquesta llista ha d’estar ordenada alfabèticament.
4. Per aprofundir, penseu quins altres mètodes poden ser necessaris
per a treballar amb la classe Magatzem, com per exemple un
que actualitzi l’estoc després que un client hagi comprat un cert
nombre d’unitats d’un producte.
Nota
Disposeu de jocs de proves per a les funcions que heu de
dissenyar al fitxer magatzem.txt.
Nota
Disposeu de solucions als fitxers lamevabotiga.py i magatzem.py.