Ulleres

Una marca d’ulleres de sol identifica els seus models mitjançant dos codis. El primer representa la mida i consta de dos dígits que indiquen el diàmetre del vidre, un guió, i dos dígits que indiquen la longitud del pont, per exemple, 52-14. El segon codi indica el model pròpiament dit, per exemple, RB2014.

La marca emmagatzema la informació dels diferents models disponibles en un diccionari on cada clau és un codi (string) amb una mida i cada valor una llista de codis de model (strings) que hi ha disponibles per a aquesta mida. Per exemple, la clau '52-14' representa la mida d’ulleres de 52 de diàmetre i 14 de pont, i el valor associat ['RB2014','RB2514','RJ2014'] indica que d’aquestes mides hi ha els models RB2014, RB2514 i RJ2014.

Al mòdul ulleres (fitxer, ulleres.py), dissenya les següents funcions.

  1. La funció modificadora unio_llistes() que, donades dues llistes l1 i l2 qualsevol, afegeix els elements de la llista l2 al final de la llista l1 sense que hi hagi elements repetits i en el mateix ordre que apareixen a l2.

    Per exemple:

    >>> llista1 = ['RB2014', 'RB2213', 'RJ2014']
    >>> llista2 = ['RJ2514', 'RB2014']
    >>> unio_llistes(llista1,llista2)
    >>> llista1
    ['RB2014', 'RB2213', 'RJ2014', 'RJ2514']
    
    >>> llista3 = [10, 20, 30, 40, 50, 60]
    >>> llista4 = [10, 55, 30, 25, 10]
    >>> unio_llistes(llista3,llista4)
    >>> llista3
    [10, 20, 30, 40, 50, 60, 55, 25]
    

    Disposes de més tests al fitxer test-unio-llistes.txt.

  2. La funció diametres() que donat un diccionari com el descrit, retorni un nou diccionari on cada clau sigui un diàmetre d’ulleres diferent i cada valor la llista dels models amb aquest diàmetre ordenada alfabèticament. Tant el diàmetre com els models es representen com a strings. En aquest nou diccionari hi han d’aparèixer tantes claus com diàmetres diferents hi hagi al diccionari donat i la llista associada a cada clau no pot contenir models repetits.

    Cal que la funció diametres() cridi a la funció unio_llistes().

    Per exemple:

    >>> du = {
    ... '52-14':['RB2014','RB2213','RJ2014'],
    ... '54-14':['RJ2014','RB2514'],
    ... '52-16':['RJ2514','RB2014'],
    ... '55-14':['RB2014'],
    ... }
    >>> dr = diametres(du)
    >>> dr == {
    ... '52':['RB2014','RB2213','RJ2014','RJ2514'],
    ... '54':['RB2514','RJ2014'],
    ... '55':['RB2014'],
    ... }
    True
    

    Disposes de més tests al fitxer test-diametres.txt.

Solució

Disposeu d’una solució al fitxer ulleres.py