2. 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 partits-23-11-2022.txt amb el contingut següent:
F,Morocco,0,Croatia,0 E,Germany,1,Japan,2 F,Belgium,1,Canada,0 E,Spain,7,Costa Rica,0
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 csfc (fitxer csfc.py) facis les funcions següents:
Avís
Les funcions tenen el mateix pes de nota.
2.1. Llegeix Classificació¶
Es demana la funció
csfc_llegeix(dm, g, Dreg)
tal que
donats
i donat que al directori actual hi ha el fitxer
partits-d-m-2022.txttal que:
dés el primer element dedm
més el segonté el format descrit abans
retorna una llista on per cada partit que es troba al fitxer indicat i que és del grup
ghi ha una subllista amb 4 valors:En cas que tan sols un dels noms d’equip (sigui del grup que sigui) no estigui a
Dregaleshores la funció retornarà la llista[-1].
Per exemple, donats el diccionari i la llista següents:
>>> Dreg = {'Morocco': None, 'Croatia': None, 'Germany': None, 'Japan': None, 'Belgium': None, 'Canada': None, 'Spain': None, 'Costa Rica': None} >>> Llin = [ ... 'F,Morocco,0,Croatia,0', ... 'E,Germany,1,Japan,2', ... 'F,Belgium,1,Canada,0', ... 'E,Spain,7,Costa Rica,0']
la crida següent ha de retornar la llista que la segueix:
>>> csfc_llegeix((1, 11), 'E', Dreg) [['Germany', 'Japan', 1, 2], ['Spain', 'Costa Rica', 7, 0]]
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 csfc_llegeix_test.txt.
2.2. Escriu Classificació¶
Es demana la funció
csfc_escriu(D, L, g)
tal que donats:
Dun diccionari (com el resultant de la funcióGenera Tauladel problemaTaula Classificatòria) que té per clau un nom de selecciós(str) i per valor els resultats d’aquesta selecció en forma d’una llista de tuples, una per cada partit disputat pers, amb els 3 valors següents:
el nom de la selecció contrària (
str)els gols fets per la mateixa selecció
sels gols fets per la selecció contrària
Luna llista on cada element és una llista amb un nom d’equip (que és una clau del diccionariD) i 4intque representen els punts, total de gols a favor, total de gols en contra i diferència de gols de l’equip en qüestió.
gunstrque indica un grup (lletra majúscula entre'A'i'F').crea un fitxer de text amb el nom
grupX.txton X és la lletra indicada agi a on per cada element de la llistaL(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 aL.
Per exemple, donats el diccionari i llista següents:
>>> Dt = { ... 'Germany': [('Japan', 1, 2), ('Spain', 1, 1), ('CostaRica', 4, 2)], ... 'Spain': [('CostaRica', 7, 0), ('Germany', 1, 1), ('Japan', 1, 2)], ... 'CostaRica': [('Spain', 0, 7), ('Japan', 1, 0), ('Germany', 2, 4)], ... 'Japan' : [('Germany', 2, 1), ('CostaRica', 0, 1), ('Spain', 2, 1)]} >>> L = [['Japan', 6, 5, 4, 1], ['Spain', 4, 9, 3, 6], ['CostaRica', 4, 5, 4, 1], ['Germany', 4, 4, 3, 1]]
la crida csfc_escriu(Dt, L, 'E') ha de generar el fitxer 'grupE.txt' amb el text següent:
Japan,6,5,4,1,Germany:2-1,CostaRica:0-1,Spain:2-1 Spain,4,9,3,6,CostaRica:7-0,Germany:1-1,Japan:1-2 CostaRica,4,5,4,1,Spain:0-7,Japan:1-0,Germany:2-4 Germany,4,4,3,1,Japan:1-2,Spain:1-1,CostaRica:4-2
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 csfc_escriu_test.txt.
Avís
El nom de les funcions han de ser exactament el demanat a l’enunciat.
El nom dels fitxers amb el teu codi han de ser exactament el nom indicat a l’enunciat amb l’extensio
.pyi és important que no contingui res més que la definició de la funció demanada.