Fòrums

Disposem d’un fitxer amb les estadístiques d’accés a un fòrum on cada línia representa un usuari i està formada pel nom de l’usuari, el nombre d’entrades al fòrum, el nombre de missatges llegits i el nombre de comentaris enviats, en aquest ordre i separats per un punt i coma. Com exemple podeu usar el fitxer dades_forum.txt amb el contingut següent:

santpere;127;57;8
hackerx;32;2;0
rose;345;764;87
anneta;543;983;12
rllul;2;2;0
apolitic;322;345;32
nini;2372;7533;674
fonaments;372;1372;0
  1. Dissenya la funció no_opina que donat el nom d’un fitxer amb el format descrit, retorni una llista amb els noms dels usuaris que no han fet cap comentari.

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

    >>> lusuaris = ['santpere;127;57;8', 'hackerx;32;2;0', 'rose;345;764;87',
    ...   'anneta;543;983;12', 'rllul;2;2;0', 'apolitic;322;345;32', 
    ...   'nini;2372;7533;674', 'fonaments;372;1372;0']
    >>> with open('dades_forum.txt', 'w') as f:
    ...    for e in lusuaris:
    ...        a = f.write (e+'\n')
    >>> no_opina ('dades_forum.txt')
    ['hackerx', 'rllul', 'fonaments']
    

    Nota

    Pots descarregar el fitxer amb tests no_opina.txt

  2. Hi ha hagut un problema durant el procés de registre d’usuaris on es necessari que els noms d’usuari tinguin com a mínim 6 caràcters i es vol conèixer si hi ha errors. Dissenya la funció nom_erroni que donat el nom d’un fitxer com el descrit anteriorment, retorna True si existeix algun nom d’usuari de menys de 6 caràcters i False en cas contrari.

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

    >>> lusuaris = ['santpere;127;57;8', 'hackerx;32;2;0', 'rose;345;764;87',
    ...   'anneta;543;983;12', 'rllul;2;2;0', 'apolitic;322;345;32', 
    ...   'nini;2372;7533;674', 'fonaments;372;1372;0']
    >>> with open('dades_forum.txt', 'w') as f:
    ...    for e in lusuaris:
    ...        a = f.write (e+'\n')
    >>> nom_erroni ('dades_forum.txt')
    True
    

    Nota

    Pots descarregar el fitxer amb tests nom_erroni.txt

  3. Dissenya la funció entrades que donat el nom d’un fitxer com el descrit anteriorment, el nom d’un altre fitxer i un enter, escrigui al segon fitxer aquells usuaris que hagin fet un nombre d’entrades al fòrum més gran o igual a l’enter donat. Al fitxer creat cada usuari ocupa una línia on hi ha el nom i el nombre d’entrades d’aquell usuari separats per un espai en blanc.

    Amb el fitxer de dades dades_forum.txt, indicat a l’inici, s’ha de crear un fitxer amb el contingut següent:

    anneta 543
    nini 2372
    

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

    >>> lusuaris = ['santpere;127;57;8', 'hackerx;32;2;0', 'rose;345;764;87',
    ...   'anneta;543;983;12', 'rllul;2;2;0', 'apolitic;322;345;32', 
    ...   'nini;2372;7533;674', 'fonaments;372;1372;0']
    >>> with open('dades_forum.txt', 'w') as f:
    ...    for e in lusuaris:
    ...        a = f.write (e+'\n')
    >>> entrades ('dades_forum.txt', 'visitants.txt', 500)
    >>> with open('visitants.txt', 'r') as f:
    ...     t = f.read()
    >>> t
    'anneta 543\nnini 2372\n'
    

    Nota

    Pots descarregar el fitxer amb tests entrades.txt

Solució

Disposeu de solucions al fitxer forum.py