Comercials

Les dades de vendes dels comercials d’una empresa es representen com a una llista on cada element és una altra llista que conté la informació d’un comercial concret: el seu identificador (un enter), la zona on treballa (una cadena de caràcters) i la xifra de vendes. Un comercial només té assignada una zona i per tant un identificador no pot aparèixer més d’una vegada a la llista. Per exemple la següent llista representa les dades de 4 comercials:

[[1182,"Nord",1302], [1173,"Sud",1372], [1190,"Nord",232], [1107,"Sud",173]]

A partir d’aquesta definició, dissenya les següents funcions:

  1. La funció primer_mes_baix tal que donada una llista de comercials i una xifra de vendes v, retorna l’identificador del primer comercial amb una xifra de vendes inferior a v o -1 si no n’hi ha cap.

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

    >>> comercials = [[1182,"Nord",1302], [1173,"Sud",1372], [1190,"Nord",232], [1107,"Sud",173]]
    >>> primer_mes_baix(comercials, 300)
    1190
    >>> primer_mes_baix(comercials, 100)
    -1
    
    

    Nota

    Podeu descarregar el fitxer amb tests comercial1.txt

  2. La funció elimina_id tal que donada una llista de comercials i un identificador, retorna una nova llista sense el comercial amb aquest identificador o bé una nova llista igual a la original si no n’hi ha cap.

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

    >>> comercials = [[1182,"Nord",1302], [1173,"Sud",1372], [1190,"Nord",232], [1107,"Sud",173]]
    >>> elimina_id(comercials, 1182)
    [[1173, 'Sud', 1372], [1190, 'Nord', 232], [1107, 'Sud', 173]]
    >>> elimina_id(comercials, 1173)
    [[1182, 'Nord', 1302], [1190, 'Nord', 232], [1107, 'Sud', 173]]
    >>> elimina_id(comercials, 3000)
    [[1182, 'Nord', 1302], [1173, 'Sud', 1372], [1190, 'Nord', 232], [1107, 'Sud', 173]]
    
    

    Nota

    Podeu descarregar el fitxer amb tests comercial2.txt

  3. La funció politica_drastica tal que donada una llista de comercials i una xifra de vendes v, retorna una nova llista sense el primer comercial amb una xifra de vendes inferior a v. Si cap comercial té una xifra de vendes inferior a v, aquesta funció ha de retornar una llista igual a la donada. Aquesta funció ha de cridar les dues anteriors.

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

    >>> comercials = [[1182,"Nord",1302], [1173,"Sud",1372], [1190,"Nord",232], [1107,"Sud",173]]
    >>> politica_drastica(comercials, 300)
    [[1182, 'Nord', 1302], [1173, 'Sud', 1372], [1107, 'Sud', 173]]
    >>> politica_drastica(comercials, 100)
    [[1182, 'Nord', 1302], [1173, 'Sud', 1372], [1190, 'Nord', 232], [1107, 'Sud', 173]]
    

    Nota

    Podeu descarregar el fitxer amb tests comercial3.txt

Solució

Disposeu de solucions als fitxers comercial1.py, comercial2.py, comercial3.py