1. FWC Standings [5p]¶
Disposem d’un fitxer de text amb dades sobre la classificació dels equips que competeixen a la copa del món de futbol (hem ajuntat els equips de dos grups diferents).
Cada línia del fitxer conté informació sobre un equip amb les següents dades separades per coma (','): nom, partits jugats, guanyats, empatats, perduts, gols a favor, gols en contra, punts i mitjana de punts per partit.
Els equips estan ordenats alfabèticament pel nom.
Com a exemple disposem del fitxer st2.txt amb el contingut següent:
Arabia,2,1,0,1,3,3,3,1.5 Argentina,2,0,1,1,3,4,1,0.5 Australia,2,0,1,1,2,5,1,0.5 Denmark,2,0,1,1,1,3,1,0.5 France,2,2,0,0,7,2,6,3.0 Mexico,2,0,2,0,2,2,2,1.0 Poland,2,1,1,0,2,1,4,2.0 Tunisia,2,0,2,0,1,1,2,1.0
Es vol re-ordenar la informació d’un fitxer com aquest. Amb aquest objectiu es demana que al mòdul standings (fitxer standings.py) facis les funcions dels apartats següents:
1.1. Read Standings [2p]¶
Es demana la funció
read_standings(nomfin)tal que donat
nomfinunstramb el nom del fitxer com el descritretorna una llista dels equips en el mateix ordre que a
nomfini on la informació de cada equip està en una llista tal que:
Per exemple, donat el fitxer st2.txt mostrat anteriorment la funció hauria de retornar la llista següent:
>>> L == [['Arabia', 2, 1, 0, 1, 3, 3, 3, 1.5], ... ['Argentina', 2, 0, 1, 1, 3, 4, 1, 0.5], ... ['Australia', 2, 0, 1, 1, 2, 5, 1, 0.5], ... ['Denmark', 2, 0, 1, 1, 1, 3, 1, 0.5], ... ['France', 2, 2, 0, 0, 7, 2, 6, 3.0], ... ['Mexico', 2, 0, 2, 0, 2, 2, 2, 1.0], ... ['Poland', 2, 1, 1, 0, 2, 1, 4, 2.0], ... ['Tunisia', 2, 0, 2, 0, 1, 1, 2, 1.0]] True
Disposes dels jocs de proves al fitxer read_standings_test.txt.
1.2. Sort Standings [1p]¶
Es demana la funció
sort_standings(L)tal que donada
Luna llista com la descrita abansmodifica
Lordenant-la segons els següents criteris aplicats en aquest ordre:
decreixentment pel nombre de punts
decreixentment per la diferència de gols (gols a favor - gols en contra)
Aquí tens un exemple:
>>> L = [['Arabia', 2, 1, 0, 1, 3, 3, 3, 1.5], ... ['Argentina', 2, 0, 1, 1, 3, 4, 1, 0.5], ... ['Australia', 2, 0, 1, 1, 2, 5, 1, 0.5], ... ['Denmark', 2, 0, 1, 1, 1, 3, 1, 0.5], ... ['France', 2, 2, 0, 0, 7, 2, 6, 3.0], ... ['Poland', 2, 1, 1, 0, 2, 1, 4, 2.0], ... ['Mexico', 2, 0, 2, 0, 2, 2, 2, 1.0], ... ['Tunisia', 2, 0, 2, 0, 1, 1, 2, 1.0]] >>> sort_standings(L) >>> L == [['France', 2, 2, 0, 0, 7, 2, 6, 3.0], ... ['Poland', 2, 1, 1, 0, 2, 1, 4, 2.0], ... ['Arabia', 2, 1, 0, 1, 3, 3, 3, 1.5], ... ['Mexico', 2, 0, 2, 0, 2, 2, 2, 1.0], ... ['Tunisia', 2, 0, 2, 0, 1, 1, 2, 1.0], ... ['Argentina', 2, 0, 1, 1, 3, 4, 1, 0.5], ... ['Denmark', 2, 0, 1, 1, 1, 3, 1, 0.5], ... ['Australia', 2, 0, 1, 1, 2, 5, 1, 0.5]] True
Observa que 'Argentina', 'Denmark', 'Australia' estan empatades a 1 punt, però la diferencia de gols és 3-4=-1, 1-3=-2 i 2-5=-3 respectivament.
Disposes dels jocs de proves al fitxer sort_standings_test.txt.
1.3. Write Standings [2p]¶
Es demana la funció
write_standings(L, nomfout)tal que donats
Luna llista com la descrita abans
nomfoutunstrcrea un fitxer de text amb el nom
nomfoutque conté les dades de L en el mateix ordre i amb la forma descrita abans.
Per exemple, donada la llista L resultant de l’exemple de l’apartat anterior, la crida >>> write_standings(L, 'st3.txt') hauria de crear el fitxer de text st3.txt següent:
France,2,2,0,0,7,2,6,3.0 Poland,2,1,1,0,2,1,4,2.0 Arabia,2,1,0,1,3,3,3,1.5 Mexico,2,0,2,0,2,2,2,1.0 Tunisia,2,0,2,0,1,1,2,1.0 Argentina,2,0,1,1,3,4,1,0.5 Denmark,2,0,1,1,1,3,1,0.5 Australia,2,0,1,1,2,5,1,0.5
No oblidis que al final de cada línia hi ha un caràcter salt de línia.
Disposes dels jocs de proves al fitxer write_standings_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.