4. Control de material del gimnàs¶
Un fitxer de material és un fitxer de text on la primera línia conté els noms dels aparells, separats per un separador (p. ex. un punt i coma), i cada línia següent conté el nombre d’utilitzacions de cada aparell, en el mateix ordre que els noms de la capçalera i separades amb el mateix separador.
Per exemple:
cinta,bicicleta,peses,el·líptica 12,8,20,5 15,10,18,7 9,6,22,4
Pots descarregar aquest fitxer: gimnas-1.txt.
Un diccionari de material és un diccionari on cada clau és el nom d’un aparell i cada valor és una llista amb totes les dades d’aquell aparell (en format string) en l’ordre en què apareixen al fitxer. Per exemple, el diccionari de material corresponent al fitxer anterior seria:
{
'cinta': ['12', '15', '9'],
'bicicleta': ['8', '10', '6'],
'peses': ['20', '18', '22'],
'el·líptica': ['5', '7', '4']
}
Dissenya la següent funció i desa-la al fitxer
gimnas.py:- crea_dic_mat(aparells)¶
Retorna un nou diccionari de material amb llistes buides com a valor
Els següents doctests mostren exemples del que ha de fer la funció:
>>> lap1 = ['cinta', 'bicicleta', 'peses', 'el·líptica'] >>> d1 = crea_dic_mat(lap1) >>> d1 == { 'cinta': [], 'bicicleta': [], 'peses': [], 'el·líptica': []} True
Disposeu de més tests al fitxer
test-crea-dic-mat.txtDissenya la següent funció i desa-la al fitxer
gimnas.py:- afegeix_dia(linia, sep, aparells, dic_material)¶
Modifica el diccionari dic_material afegint-hi les dades de la línia linia.
- Paràmetres:
linia (str) – línia del fitxer amb dades separades pel separador sep i amb salt de línia al final
sep (str) – separador
aparells (list[str]) – noms dels aparells en l’ordre en què estan a linia. Es suposa que tots els noms ja hi són al diccionari dic_material
dic_material (dict) – diccionari de material
Els següents doctests mostren exemples del que ha de fer la funció:
>>> dic1 = {'cinta': ['12'], 'bicicleta': ['8'], 'peses': ['20'], ... 'el·líptica': ['5']} >>> aparells1 = ['cinta', 'bicicleta', 'peses', 'el·líptica'] >>> afegeix_dia('15,10,18,7\n', ',', aparells1, dic1) >>> dic1 == {'cinta': ['12', '15'], 'bicicleta': ['8', '10'], ... 'peses': ['20', '18'], 'el·líptica': ['5', '7']} True
Disposeu de més tests al fitxer
test-afegeix-dia.txtDissenya la següent funció i desa-la al fitxer
gimnas.py:- dic_material(nf, sep)¶
Crea un diccionari de material amb les dades del fitxer nf.
Cal que aquesta funció cridi les funcions
crea_dic_mat()iafegeix_dia().Els següents doctests mostren exemples del que ha de fer la funció quan es crida amb el nom del fitxer de l’exemple anterior (
gimnas-1.txt):>>> d = dic_material('gimnas-1.txt', ',') >>> d == {'cinta': ['12', '15', '9'], 'bicicleta': ['8', '10', '6'], ... 'peses': ['20', '18', '22'], 'el·líptica': ['5', '7', '4']} True
Disposeu de més tests al fitxer
test-dic-material.txt
Disposes de solucions al fitxer gimnas.py.