Fundació

Una fundació vol dur a terme un control de les trucades dels seus directius. Per això es disposa d’un fitxer de trucades on a cada línia hi ha el dni d’un directiu i els números de telèfon als que ha trucat aquest directiu la darrera setmana, separats per un espai en blanc. Com a exemple, pots descarregar el fitxer dades_fundacio.txt que té el següent contingut:

38999000 91056987 0041555666777 938777666 0041999666777
37888777 91056987 938876666
36787656 91056988 0041555666777 938876545 0041999666555 0041999666777
36999000 91056984 0041555666777 938777666 0041999666777 91454323565
38888777 91056988 0041999666777 938876666 0041999666444 0041999666555 0041666555444
35787656 91056987 938876545 913456543
39999000 91056987 0041666555444 938777666 0041999666777 0041999666444
36546567 91056987 0041555666777 938876666 0041999666444 0041555666777 918786664
36778654 91056987 938876545 937679875
  1. Dissenya la funció directiu que donat com a paràmetre un string que conté tota la informació corresponent a un directiu, tal com figura al fitxer de trucades, retorni un tuple amb la següent informació: dni (string), nombre total de números als que ha trucat (enter) i nombre de vegades que ha trucat a Suissa (enter). Els números de telèfon corresponents a Suissa comencen per “0041”.

    Desa la funció al fitxer fundacio.py. La funció ha de passar el següent doctest:

    >>> directiu ('38999000 91056987 0041555666777 938777666 0041999666777')
    ('38999000', 4, 2)
    >>> directiu ('35787656 91056987 938876545 913456543')
    ('35787656', 3, 0)
    >>> a = '38888777 91056988 0041999666777 938876666 0041999666444 '
    >>> b = '0041999666555 0041666555444'
    >>> directiu (a+b)
    ('38888777', 6, 4)
    

    Nota

    Pots descarregar el fitxer amb tests directiu.txt

  2. Dissenya la funció fundacio que, donats com a paràmetres el nom d’un fitxer de trucades com el descrit i el nom d’un altre fitxer, escrigui en aquest segon fitxer una línia per cada directiu del primer fitxer que hagi trucat a Suissa. A cada línia cal escriure-hi dues dades separades per un espai en blanc: dni i nombre de vegades que ha trucat a Suissa. Aquesta funció ha de cridar la dissenyada a l’apartat anterior i usar adequadament el tuple que retorna.

    Amb el fitxer de dades dades_fundacio.txt indicat s’ha de crear un fitxer amb el contingut següent:

    38999000 2
    36787656 3
    36999000 2
    38888777 4
    39999000 3
    36546567 3
    

    Desa la funció al fitxer fundacio.py. La funció ha de passar el següent doctest:

    >>> fundacio('dades_fundacio.txt', 'tsuissa.txt')
    >>> f = open('tsuissa.txt', 'r')
    >>> ' '.join(f.read().split())
    '38999000 2 36787656 3 36999000 2 38888777 4 39999000 3 36546567 3'
    

    Nota

    Pots descarregar el fitxer amb tests fundacio.txt

Solució

Disposeu de solucions al fitxer fundacio.py