1. Actualitzem preus (3 punts)¶
Un magatzem guarda la informació dels seus productes en un
diccionari. En aquest diccionari les claus són strings que representen
els tipus de productes (verdures, fruites, cereals…) i
els valors són, a la vegada, un diccionari amb les claus els diferents
productes d’aquest tipus i els valors el preu per unitat (o quilo). Per
altra banda, tenim una llista amb els increments de preus. En aquest
cas, la llista és una llista de tuples, on cada tupla conté un string
corresponent a un tipus de productes i un enter que és el percentatge
que hem d’incrementar els productes d’aquest tipus.
Podem observar un exemple de diccionari i un de llista tot seguit:
>>> d={'verdura':{'mongeta tendra': 5.43, 'col': 2.5, 'pastanaga': 2.7},
... 'fruita': {'mandarina': 3.7, 'taronja': 3.5, 'platan': 2.9, 'poma':3.2},
... 'cereals': {'pasta macarrons': 1.4, 'pasta sopa': 1.2}}
>>> l=[('verdura', 10), ('cereals', 15), ('fruita', 20)]
Observem que una de les claus del diccionari és verdures. El valor d’aquesta clau és un diccionari de longitud tres, amb tres productes. Per altra banda, la llista dels percentatges d’increments conté ('verdura', 10), per tant, el preu de les verdures s’hauran d’incrementar un 10%.
El nostre objectiu serà actualitzar el diccionari segons els increments de preu que hem d’aplicar.
Per això es demana que al fitxer preus.py: implementis la funció
- actualitza(d_productes, increm)¶
on d_productes és un diccionari com l’anteriorment descrit i
increments una llista amb els increments que s’han
d’aplicar. Aquesta funció haurà d’actualitzar els preus de tots els
productes tenint en compte els increments que s’han d’aplicar segons
la llista increm. Els nous valors han d’estar arrodonits a dos
decimals.
Pots descarregar el
fitxer d’exemple test-preus.txt amb
el següent contingut:
>>> d={'verdura':{'mongeta tendra': 5.43, 'col': 2.5, 'pastanaga': 2.7},
... 'fruita': {'mandarina': 3.7, 'taronja': 3.5, 'platan': 2.9, 'poma':3.2},
... 'cereals': {'pasta macarrons': 1.4, 'pasta sopa': 1.2}}
>>> l=[('verdura', 10), ('cereals', 15), ('fruita', 20)]
>>> actualitza(d, l)
>>> if d !={'verdura': {'mongeta tendra': 5.97, 'col': 2.75, 'pastanaga': 2.97},
... 'fruita': {'mandarina': 4.44, 'taronja': 4.2, 'platan': 3.48, 'poma': 3.84},
... 'cereals': {'pasta macarrons': 1.61, 'pasta sopa': 1.38}}:
... print (d)
>>> d2={'verdura':{'mongeta tendra': 10.0, 'col': 5, 'pastanaga': 3},
... 'fruita': {'mandarina': 3.7, 'taronja': 3.5, 'platan': 2.9, 'poma':3.2}}
>>> l2=[('verdura', 20)]
>>> r=actualitza(d2, l2)
>>> r==None
True
>>> if d2 !={'verdura': {'mongeta tendra': 12.0, 'col': 6.0, 'pastanaga': 3.6},
... 'fruita': {'mandarina': 3.7, 'taronja': 3.5, 'platan': 2.9, 'poma': 3.2}}:
... print (d2)
Trobaràs una solució a preus.py.