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 nomfin un str amb el nom del fitxer com el descrit

retorna una llista dels equips en el mateix ordre que a nomfin i on la informació de cada equip està en una llista tal que:

  • les dades estan en el mateix ordre que a nomfin

  • cada dada té el tipus que li correspon (str, float o int)

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 L una llista com la descrita abans

modifica L ordenant-la segons els següents criteris aplicats en aquest ordre:

  1. decreixentment pel nombre de punts

  2. 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

  • L una llista com la descrita abans

  • nomfout un str

crea un fitxer de text amb el nom nomfout que 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 .py i és important que no contingui res més que la definició de la funció demanada.