1. Taula Classificatòria [4p]

Volem generar un diccionari amb la taula classificatòria de les seleccions d’un grup del mundial de futbol a partir dels resultats dels partits d’aquest grup que tenim en una llista. Concretament cada element és una llista amb les dades d’un partit següents: els noms de les dues seleccions (str) i els gols marcats per cada selecció respectivament (int).

Per exemple:


>>> Lr = [['Germany', 'Japan', 1, 2],
... ['Spain', 'CostaRica', 7, 0],
... ['Japan', 'CostaRica', 0, 1],
... ['Spain', 'Germany', 1, 1],
... ['Japan', 'Spain', 2, 1],
... ['CostaRica', 'Germany', 2, 4]]

En l’exemple la primera subllista correspon al partit on Germany va perdre 1 a 2 amb Japan.

El diccionari resultant tindrà com a clau el nom de la selecció (str) i el valor associat serà una llista (list) amb els seus resultats (les dades es detallen a cada apartat).

Amb aquest objectiu es demana que al mòdul tcf (fitxer tcf.py) facis les funcions dels apartats següents:

Avís

Cada apartat té el mateix pes de nota.

1.1. Genera Taula

Es demana la funció

tcf_genera(Lr)

tal que

donada Lr una llista de resultats com la descrita

retorna un diccionari que té per clau un nom de selecció s (str) i per valor els resultats d’aquesta selecció segons Lr 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 (str)

  • els gols fets per la mateixa selecció s

  • els gols fets per la selecció contrària

Aquí tens un exemple:


>>> Lr = [['Germany', 'Japan', 1, 2],
... ['Spain', 'CostaRica', 7, 0],
... ['Japan', 'CostaRica', 0, 1],
... ['Spain', 'Germany', 1, 1],
... ['Japan', 'Spain', 2, 1],
... ['CostaRica', 'Germany', 2, 4]]

--fl

>>> Dt = tcf_genera(Lr)
>>> 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)]}
True

Disposes dels jocs de proves al fitxer tcf_genera_test.txt.

1.2. Puntua Taula

Es demana la funció

tcf_puntua(Dtcf)

tal que

donat Dtcf un diccionari com el generat per la funció tcf_genera(Lr) de l’apartat anterior

modifica Dtcf de manera que cada clau (str amb un nom de selecció s) té associada una llista amb els elements següents:

  • El total de punts aconseguits per s (cada partit guanyat són 3 punts, empatat és 1 punt i perdut són 0 punts).

  • El total de gols a favor.

  • El total de gols en contra.

  • Els resultats (la llista de tuples) que ja tenia associada abans.

Aquí tens un exemple:


>>> DtjtE = {
... '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)]}

>>> tcf_puntua(DtjtE)

>>> DtjtE == {
... 'Germany': [4, 6, 5, [('Japan', 1, 2), ('Spain', 1, 1), ('CostaRica', 4, 2)]],
... 'Spain': [4, 9, 3, [('CostaRica', 7, 0), ('Germany', 1, 1), ('Japan', 1, 2)]],
... 'CostaRica': [3, 3, 11, [('Spain', 0, 7), ('Japan', 1, 0), ('Germany', 2, 4)]],
... 'Japan' : [6, 4, 3, [('Germany', 2, 1), ('CostaRica', 0, 1), ('Spain', 2, 1)]]}
True

Disposes de jocs de proves al fitxer tcf_puntua_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.