Fitxers de Classificació [4p] ============================= Disposem de fitxers de text amb els resultats dels partits realitzats un dia determinat del *FIFA World Cup* de futbol. En un mateix dia hi pot haver partits de grups diferents. Els partits no estan ordenats. Cada línia del fitxer conté la informació sobre un partit amb les informacions següents separades per coma (``','``): - grup (una lletra majúscula entre la ``'A'`` i la ``'F'`` incloses) - nom d'un equip - nombre de gols que ha marcat - nom de l'equip contrari - nombre de gols del contrari Disposem d'un exemple al fitxer :download:`partits-23-11-2022.txt` amb el contingut següent: .. literalinclude:: partits-23-11-2022.txt :language: python3 Es vol llegir aquesta informació i escriure la informació de la taula classificatòria que se'n deriva. Amb aquest objectiu es demana que al mòdul :mod:`csfc` (fitxer :file:`csfc.py`) facis les funcions següents: .. warning:: Les funcions tenen el mateix pes de nota. *Llegeix Classificació* ----------------------- Es demana la funció :file:`csfc_llegeix(dm, g, Dreg)` tal que *donats* - ``dm`` una tupla (:class:`tuple`) amb dos enters (:class:`int`) que indiquen un dia del mes i un mes, respectivament - ``g`` un :class:`str` que indica un grup (lletra majúscula entre la ``'A'`` i la ``'F'``) - ``Dreg`` un diccionari (:class:`dict`) on la clau és un :class:`str` (noms d'equip) i el valor és ``None`` (o sigui res) i donat que al directori actual hi ha el fitxer ``partits-d-m-2022.txt`` tal que: - ``d`` és el primer element de ``dm`` - ``m`` és el segon - té el format descrit abans *retorna* una llista on per cada partit que es troba al fitxer indicat i que és del grup ``g`` hi ha una subllista amb 4 valors: - els noms dels dos equips (:class:`str`) - els gols (:class:`int`) marcats pels dos equips respectivament En cas que tan sols un dels noms d'equip (sigui del grup que sigui) no estigui a ``Dreg`` aleshores la funció retornarà la llista ``[-1]``. Per exemple, donats el diccionari i la llista següents: .. literalinclude:: csfc_llegeix_test.txt :language: python3 :start-after: --iniin :end-before: --fiin la crida següent ha de retornar la llista que la segueix: .. literalinclude:: csfc_llegeix_test.txt :language: python3 :start-after: --iniout :end-before: --fiout Observa que la llista només conté els partits del grup ``E``. Si no n'hi hagués cap la llista retornada seria buida ``[]``. Si hi hagués tan sols un equip que no fos correcte (no inclòs al diccionari) la llista resultant seria ``[-1]``. Disposes dels jocs de proves al fitxer :download:`csfc_llegeix_test.txt`. *Escriu Classificació* ---------------------- Es demana la funció :file:`csfc_escriu(D, L, g)` tal que *donats*: - ``D`` un diccionari (com el resultant de la funció ``Genera Taula`` del problema ``Taula Classificatòria``) que té per clau un nom de selecció ``s`` (:class:`str`) i per valor els resultats d'aquesta selecció en forma d'una llista de tuples, una per cada partit disputat per ``s``, amb els 3 valors següents: - el nom de la selecció contrària (:class:`str`) - els gols fets per la mateixa selecció ``s`` - els gols fets per la selecció contrària - ``L`` una llista on cada element és una llista amb un nom d'equip (que és una clau del diccionari ``D``) i 4 :class:`int` que representen els punts, total de gols a favor, total de gols en contra i diferència de gols de l'equip en qüestió. - ``g`` un :class:`str` que indica un grup (lletra majúscula entre ``'A'`` i ``'F'``). *crea* un fitxer de text amb el nom ``grupX.txt`` on X és la lletra indicada a ``g`` i a on per cada element de la llista ``L`` (informació que correspon a un equip) hi haurà una línia en el format que es mostra a l'exemple següent i en el mateix ordre que a ``L``. Per exemple, donats el diccionari i llista següents: .. literalinclude:: csfc_escriu_test.txt :language: python3 :start-after: --iniin :end-before: --fiin la crida ``csfc_escriu(Dt, L, 'E')`` ha de generar el fitxer ``'grupE.txt'`` amb el text següent: .. literalinclude:: grupE.txt :language: python3 No oblidis que al final de cada línia hi ha un caràcter salt de línia ``'\n'``. Disposes dels jocs de proves al fitxer :download:`csfc_escriu_test.txt`. .. include:: cloenda.rst