1. Torrons¶
Una empresa que fabrica torrons de tres categories: 'artesans', 'gourmet' i 'especialitats', disposa d’una llista de vendes a on cada element és una tupla de cinc components: el nom del torró (str), la categoria (str), les unitats venudes (int`), un booleà que és ``True si s’ha venut dins una promoció d’oferta i un altre booleà que és True si s’ha venut a la botiga web i False si s’ha venut a la botiga física. Per exemple, a la llista següent:
[('gourmet_dur', 'gourmet', 1, False, False), ('tou_ametlla', 'artesans', 1, False, True)]
la primera venda correspon al torró gourmet_dur, de la categoria gourmet, no s’ha venut dins una promoció i s’ha venut a una botiga física.
Es vol crear un diccionari de vendes a on cada clau sigui una categoria i cada valor una llista de dos elements amb el primer el nombre total d’unitats venudes d’aquesta categoria a la botiga física i el segon el nombre d’unitats venudes de la categoria a la botiga web. Les vendes que corresponguin a promocions d’oferta no s’inclouran a aquestes claus, sinó a una clau separada anomenada 'ofertes'.
Dissenya la funció crea_dicc que donada una llista de vendes com la indicada, retorna un diccionari de vendes. Aquest diccionari haurà d’incloure totes les categories de productes i la clau 'ofertes' tot i que no apareguin productes d’alguna categoria o no hi hagi vendes amb promocions a la llista.
Els següents doctests mostren exemples del que ha de fer la funció:
>>> lv = [('gourmet_dur', 'gourmet', 1, False, False), ... ('tou_ametlla', 'artesans', 1, False, True), ... ('agramunt_ametlla', 'artesans', 4, False, True), ... ('textura_llimona', 'especialitats', 2, True, False)] >>> d_res = crea_dicc(lv) >>> d_res == {'artesans': [0, 5], 'gourmet': [1, 0], 'especialitats': [0, 0], 'ofertes': [2, 0]} True >>> lv = [('macadàmia_vainilla', 'especialitats', 1, False, False), ... ('textura_llimona', 'especialitats', 3, False, True), ... ('agramunt_avellana', 'artesans', 5, False, False)] >>> d_res = crea_dicc(lv) >>> d_res == {'artesans': [5, 0], 'gourmet': [0, 0], 'especialitats': [1, 3], 'ofertes': [0, 0]} True
Disposeu de tests al fitxer test-torrons.txt.
Deseu la funció al fitxer torrons.py i pugeu-lo a Atenea.
Disposeu d’una solució al fitxer torrons.py.