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.

  1. En un mòdul magatzem.py dissenyeu la classe Magatzem que 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.