2. Competició

Es disposa d’un fitxer a on cada línia representa el participant d’un cert esport i inclou el nom, el número amb que participa i una sèrie d’enters indicant en quina posició ha arribat en diverses competicions, tot separat per un espai, un guió i un espai. Per exemple:

Carlos Pace - 13 - 2 - 3 - 1
Luigi Musso - 65 - 2 - 5 - 6 - 3
Sam Hanks - 23 - 4 - 10 - 11
Sandro Musso - 15 - 2 - 4 - 8
Sam Samuels - 23 - 8

Per resoldre l’exercici has de dissenyar les dues funcions següents i desar totes dues al fitxer competicio.py.

  1. Dissenya la funció processa_llista que donada una llista d’strings a on el primer element és el nom d’un participant i el segon el número amb el que participa, tot seguit d’una sèrie de números indicant en quina posició ha arribat en diverses competicions, retorna el nom del participant, el nombre de competicions en les que ha participat i el nombre de competicions en les que ha quedat entre els tres primers.

    Els següents doctests mostren exemples del que ha de fer la funció:

    >>> l = ['Carlos Pace', '13', '2', '3', '1']
    >>> processa_llista(l)
    ('Carlos Pace', 3, 3)
    
    >>> l = ['Sam Hanks', '23', '4', '10', '11']
    >>> processa_llista(l)
    ('Sam Hanks', 3, 0)
    

    Disposeu de tests al fitxer test-processa-llista.txt.

  2. Dissenya la funció resultats que donat el nom d’un fitxer (string) amb resultats de competicions i el nom d’un segon fitxer (string), escriu al segon fitxer una línia per participant amb el nom del participant, un espai en blanc i el percentatge de competicions en les que ha quedat entre els tres primers. Aquesta funció ha de cridar a la funció anterior processa_llista.

    Per exemple, amb les dades de l’exemple indicat a dalt (exemple.txt), la funció hauria d’escriure un fitxer com el següent:

    Carlos Pace 100.0 
    Luigi Musso 50.0 
    Sam Hanks 0.0 
    Sandro Musso 33.3 
    Sam Samuels 0.0 
    

    Disposeu de tests al fitxer test-resultats.txt.

    Disposeu d’una solució al fitxer competicio.py.