Paradistes

Un ajuntament munta una fira pel solstici d’estiu cada any on hi van paradistes. Per això disposa d’un fitxer on a cada línia hi ha el nom del paradista (string), la longitud de la parada (real) i el producte (string), separats pel caràcter punt i coma (;). A més, es disposa d’un diccionari on la clau és el nom d’un producte i el valor és un tipus de producte (strings). Només hi ha dos tipus de productes: alimentació i artesania. Al fitxer, els paradistes estan ordenats per ordre de més a menys preferència per participar a la fira (que depèn de diversos factors). Per exemple:

joan pera;2.2;formatges
marta perez;2.3;cuir
georgina pi;1.8;joieria
pepeta morales;1.9;embotits
pere girbau;2.1;coques
maria marti;2.3;vestits
jordi pons;2;joieria
narcis punti;1.9;cuir

Podeu descarregar el fitxer d’exemple paradistes.txt

Aquest any, l’ajuntament vol posar a un costat de la Rambla parades d’alimentació i a l’altre d’artesania. Cada costat de la Rambla té una determinada longitud que no es pot excedir. L’ajuntament vol que obtinguem dos fitxers: un amb els noms dels paradistes d’alimentació i l’altre amb els d’artesania que poden anar a la fira. Els paradistes s’assignen per ordre d’aparició al fitxer i fins a omplir el corresponent costat de la Rambla. Si es dóna el cas que un paradista no hi cap, però si que hi cap un altre de menys preferència, s’hi assigna aquest altre.

  1. Dissenyeu la funció decodifica() que donada una línia del fitxer inicial (string) i el diccionari indicat, retorni el nom (string) del paradista, la longitud de la parada (real) i el tipus del producte (string).

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

    >>> dic = {'formatges': 'alimentació', 'cuir': 'artesania',
    ...        'embotits': 'alimentació', 'coques': 'alimentació',
    ...        'vestits': 'artesania', 'joieria': 'artesania'}
    >>> decodifica('joan pera;2.2;formatges\n', dic)
    ('joan pera', 2.2, 'alimentació')
    

    Nota

    Podeu descarregar el fitxer amb tests decodifica.txt.


  1. Dissenyeu la funció parades() que donats els noms de tres fitxers (fparadistes, falim i fartes), el diccionari indicat i les longituds corresponents als dos costats de la Rambla (lalim i lartes), obtingui a partir del fitxer fparadistes els fitxers falim i fartes, amb els noms dels paradistes d’alimentació i d’artesania, respectivament, que podran anar a la fira. Aquesta funció ha de cridar a l’anterior.

    Deseu la funció al fitxer parades.py. La funció ha de passar el següent doctest i crear els fitxers 'alim.txt' i 'artes.txt', mostrats a sota.

    >>> dic = {'formatges': 'alimentació', 'cuir': 'artesania',
    ...        'embotits': 'alimentació', 'coques': 'alimentació',
    ...        'vestits': 'artesania', 'joieria': 'artesania'}
    >>> parades('paradistes.txt', 'alim.txt', 'artes.txt', dic, 5.1, 6.1)
    

    Nota

    Podeu descarregar el fitxer amb tests parades.txt i el fitxer d’exemple paradistes.txt.

    El contingut dels fitxers creats en la crida del doctest anterior hauria de ser:

    'alim.txt'                          'artes.txt'
    
    joan pera                           marta perez
    pepeta morales                      georgina pi
                                        jordi pons
    

Solucions

Disposeu de solucions al fitxer parades.py