NBA

Les classificacions de la lliga de bàsquet de la NBA s’emmagatzemen en un fitxer on a cada línia hi ha la informació d’un equip formada pel nom de l’equip, el nom de la divisió on juga i el nombre de partits guanyats i perduts, tot separat amb l’string ' : ' (un blanc, dos punts i un blanc). El nombre de partits guanyats i perduts està separat per un guió. Com a exemple, pots descarregar el fitxer nba.txt del que se’n mostren les primeres línies:

Boston Celtics : Atlantic : 11-9
Indiana Pacers : Central : 9-11
Utah Jazz : Northwest : 13-10
Portland Trail Blazers : Northwest : 12-11
Brooklyn Nets : Atlantic : 9-13

Desa les següents funcions al fitxer nba.py.

  1. Dissenya la funció bons_equips() que donat el nom d’un fitxer com l’indicat i un enter, v, retorni una llista amb els noms dels equips que han guanyat més de v partits ordenats alfabèticament de forma ascendent.

    >>> bons_equips('nba.txt', 12)
    ['New Orleans Pelicans', 'Oklahoma City Thunder', 'Orlando Magic', 'Phoenix Suns', 'San Antonio Spurs', 'Toronto Raptors', 'Utah Jazz']
    >>> bons_equips('nba.txt', 15)
    ['San Antonio Spurs']
    >>> bons_equips('nba.txt', 11)
    ['Chicago Bulls', 'New Orleans Pelicans', 'Oklahoma City Thunder', 'Orlando Magic', 'Phoenix Suns', 'Portland Trail Blazers', 'San Antonio Spurs', 'Toronto Raptors', 'Utah Jazz']
    >>> bons_equips('nba.txt', 18)
    []
    

    Nota

    Podeu descarregar el fitxer amb tests bons_equips.txt

  2. Dissenya la funció agrupa() que donat el nom d’un fitxer com l’indicat, retorni un diccionari on la clau sigui la divisió i el valor la llista d’equips ordenats alfabèticament de forma ascendent.

    >>> d = agrupa('nba.txt')
    >>> d == {'Atlantic': ['Boston Celtics', 'Brooklyn Nets', 'Toronto Raptors'],
    ... 'Central': ['Chicago Bulls', 'Cleveland Cavaliers', 'Indiana Pacers'],
    ... 'Northwest': ['Oklahoma City Thunder', 'Portland Trail Blazers',
    ... 'Utah Jazz'], 'Southeast': ['Orlando Magic', 'Washington Wizards'],
    ... 'Pacific': ['Los Angeles Lakers', 'Phoenix Suns', 'Sacramento Kings'],
    ... 'Southwest': ['Dallas Mavericks', 'New Orleans Pelicans', 'San Antonio Spurs']}
    True
    

    Nota

    Podeu descarregar el fitxer amb tests agrupa.txt

  3. Dissenya la funció guanyen() que donat el nom d’un fitxer com l’indicat i un string indicant una divisió, retorni una llista amb els equips d’aquella divisió tals que el nombre de partits que han guanyat és més gran que el nombre de partits que han perdut. Els elements d’aquesta llista han de ser tuples de dos elements: nom de l’equip i nombre de partits guanyats (enter) i han d’estar ordenats de forma decreixent pel nombre de partits guanyats.

    >>> guanyen('nba.txt', 'Atlantic')
    [('Toronto Raptors', 15), ('Boston Celtics', 11)]
    >>> guanyen('nba.txt', 'Central')
    [('Chicago Bulls', 12), ('Cleveland Cavaliers', 11)]
    >>> guanyen('nba.txt', 'Northwest')
    [('Utah Jazz', 13), ('Oklahoma City Thunder', 13), ('Portland Trail Blazers', 12)]
    >>> guanyen('nba.txt', 'Pacific')
    [('Phoenix Suns', 14), ('Sacramento Kings', 11)]
    >>> guanyen('nba.txt', 'Southwest')
    [('San Antonio Spurs', 16), ('New Orleans Pelicans', 13)]
    

    Nota

    Podeu descarregar el fitxer amb tests guanyen.txt

Solucions

Disposeu de solucions al fitxer nba.py