2. Guanyador de la lliga (4 Punts)¶
Ens hem proposat analitzar qui guanyaria la lliga segons la manera de puntuar a cada partit guanyat, empatat o perdut. Per aquest motiu, suposarem que tenim un fitxer amb la informació de tots els partits jugats durant la lliga. Aquest fitxer conté dues primeres files explicatives i la resta de les files contenen informació de cada un dels partits jugats. Les files corresponents als partits jugats tenen el següent format: equip de casa, punts equip de casa, equip visitant, punts equip visitant. Cada partit només hi surt un cop.
Podeu observar un fitxer d’aquest tipus lligueta.txt:
equip_casa gols_casa equip_visitant gols_v
------------------------------------------
Barceloneta:2:Marina:2
Hostafrancs:3:Poble Nou:4
Sants:5:Carmel:2
Vila de Gràcia:2:Raval:6
Poble Sec:3:Sarrià:2
Marina:2:Poble Nou:2
Carmel:6:Sarrià:3
Raval:4:Barceloneta:4
Vila de Gràcia:2:Hostafrancs:2
Barceloneta:2:Sarrià:1
Marina:5:Raval:2
Sants:5:Vila de Gràcia:5
Poble Sec:2:Hostafrancs:2
Poble Nou:0:Poble Sec:0
Poble Sec:4:Vila de Gràcia:2
Raval:7:Sarrià:1
Hostafrancs:5:Barceloneta:5
Carmel:3:Marina:3
Poble Nou:3:Vila de Gràcia:3
Sarrià:5:Hostafranc:5
Es demana que implementeu una funció auxiliar anomenada:
- calcula_punts(gols_c, gols_v, punts_g, punts_e)¶
tal que a partir de 4 enters, que representen els gols que han fet l’equip de casa i el visitant i els punts que es dona per partit guanyat i per partit empatat, retorni una tupla amb els punts que tindran, respectivament, l’equip de casa i el visitant.
La funció ha de passar el següent doctest:
>>> calcula_punts(3, 4, 3, 1) (0, 3) >>> calcula_punts(4, 4, 3, 1) (1, 1) >>> calcula_punts(4, 2, 3, 1) (3, 0) >>> calcula_punts(10, 4, 2, 2) (2, 0) >>> calcula_punts(4, 2, 1, 1) (1, 0)Pots descarregar el fitxer amb tests
test-calcula.txt.
Utilitzant aquesta funció, implementa una funció anomenada
guanyadorque té com a paràmetres un string que representa el nom d’un fitxer de text com el descrit i dos enters,punts_gipunts_eque són els punts que té un equip quan guanya o empata un partit. Aquesta funció ha de retornar el nom de l’equip guanyador (és a dir, que obté més punts) tenint en compte que els punts que s’obtenen per partit guanyat i els punts per partit empatat venen dels paràmetrespunts_gipunts_e. En cas que hi hagi més d’un equip amb el màxim de punts, retornarem l’equip amb nom més gran amb ordre alfabètic.
Nota
Es recomana construir un diccionari auxiliar en el qual les claus són els noms dels equips i el valor corresponent els punts que porta cada equip segons els paràmentres punts_g i punts_e.
Desa les dues funcions al fitxer lliga.py i puja’l a Atenea. Els següents doctests mostren exemples del que ha de fer la funció:
>>> guanyador('lligueta.txt', 5, 4)
'Poble Sec'
>>> guanyador('lligueta.txt', 4, 1)
'Poble Sec'
>>> guanyador('lligueta.txt', 1, 0)
'Raval'
>>> guanyador('lligueta.txt', 1, 1)
'Poble Sec'
>>> guanyador('lligueta.txt', 4, 0)
'Raval'
Nota
Pots descarregar el fitxer amb tests test-lliga.txt i el fitxer amb informació sobre els resultats
dels partits jugats a lligueta.txt.
Trobaràs una solució a lliga.py.