Sabateria

Les existències d’una sabateria es representen amb una llista d’articles corresponents a talles de sabates. Un article es representa amb una llista de dos enters que signifiquen, respectivament, la talla i el nombre de parells de sabates d’aquesta talla que hi ha a la sabateria. La llista d’articles no està ordenada segons cap criteri i cada talla hi apareix un sol cop com a màxim.

  1. Dissenya la funció sabateria1 que a partir d’una llista d’articles i dues talles t1 i t2 retorni la talla de la qual hi ha més parells de sabates d’entre les dues talles donades (ambdúes incloses). Si hi hagués més d’una talla que complís aquest requisit, cal retornar la primera que es trobi. Si no hi ha cap parell entre les talles donades o la llista donada és buida, la funció retornarà -1.

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

    >>> llista =[[30, 4], [45, 5], [36, 8], [37, 12], [42, 6], [28, 11], [32, 8], [34, 9], [41, 4], [38, 6], [44, 7], [33, 8], [40, 5], [35, 7], [39, 12], [29, 9], [31, 5], [43, 12]]
    >>> sabateria1(llista, 35, 40)
    37
    

    Nota

    Pots descarregar el fitxer amb tests sabateria1.txt

  2. Dissenya la funció cerca_talla que a partir d’una llista d’articles i un enter indicant una talla, retorni la posició a la llista d’articles de l’article corresponent a aquella talla. Si la talla no apareix a la llista d’articles, aquesta funció ha de retornar -1.

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

    >>> stock =[[30, 4], [45, 5], [36, 8], [37, 12], [42, 6], [32, 8], \
    ...  [34, 9], [41, 4], [38, 6], [44, 7], [33, 8], [40, 5], [35, 7], [39, 12], \
    ...  [29, 9], [31, 5]]
    >>> cerca_talla (stock, 36)
    2
    >>> cerca_talla (stock, 41)
    7
    >>> cerca_talla (stock, 28)
    -1
    

    Nota

    Pots descarregar el fitxer amb tests per aquesta funció i les dues següents sabateria2.txt

  3. Dissenya la funció modifica_talla que a partir d’una llista d’articles, un enter indicant la posició d’un article i un altre enter indicant una quantitat de parells de sabates, modifiqui la llista de forma que l’article corresponent a la posició donada incrementi les seves unitats amb la quantitat donada.

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

    >>> stock =[[30, 4], [45, 5], [36, 8], [37, 12], [42, 6], [32, 8], \
    ...  [34, 9], [41, 4], [38, 6], [44, 7], [33, 8], [40, 5], [35, 7], [39, 12], \
    ...  [29, 9], [31, 5]]
    >>> modifica_talla (stock, 2, 1)
    >>> stock == [[30, 4], [45, 5], [36, 9], [37, 12], [42, 6], [32, 8], \
    ... [34, 9], [41, 4], [38, 6], [44, 7], [33, 8], [40, 5], [35, 7], [39, 12],\
    ... [29, 9], [31, 5]]
    True
    >>> modifica_talla (stock, 7, 4)
    >>> stock == [[30, 4], [45, 5], [36, 9], [37, 12], [42, 6], [32, 8], \
    ... [34, 9], [41, 8], [38, 6], [44, 7], [33, 8], [40, 5], [35, 7], [39, 12], \
    ... [29, 9], [31, 5]]
    True
    

    Nota

    Pots descarregar el fitxer amb tests per aquesta funció i les dues següents sabateria3.txt

  4. Dissenya la funció modifica_stock que donada una llista d’articles corresponent a l’stock de la sabateria i una altra llista d’articles corresponent a entrades noves de sabates, actualitzi la primera amb els nous parells de la segona. Aquesta funcio ha de cridar les dues anteriors: cerca_talla i modifica_talla.

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

    >>> stock =[[30, 4], [45, 5], [36, 8], [37, 12], [42, 6], [32, 8], \
    ... [34, 9], [41, 4], [38, 6], [44, 7], [33, 8], [40, 5], [35, 7], [39, 12], \
    ... [29, 9], [31, 5]]
    >>> entrades = [[36, 1], [37, 2], [28, 3], [32, 1], [41, 4], [43, 2]]
    >>> modifica_stock(stock, entrades)
    >>> stock == [[30, 4], [45, 5], [36, 9], [37, 14], [42, 6], [32, 9], \
    ... [34, 9], [41, 8], [38, 6], [44, 7], [33, 8], [40, 5], [35, 7], [39, 12],\
    ... [29, 9], [31, 5], [28, 3], [43, 2]]
    True
    

    Nota

    Pots descarregar el fitxer amb tests per aquesta funció i les dues següents sabateria4.txt

Solucions

Disposeu de solucions als fitxers sabateria1.py i sabateria2.py