1. Comandes de clients

  1. Una empresa representa les comandes d’un client en una llista que conté:

    • Un identificador de client que és un string format per nom, primer cognom i segon cognom separats per un o més espais.

    • Una llista amb els codis (string) de productes demanats. Cada codi de producte conté exactament un guió ('-') que separa dues parts alfabètiques de longitud variable.

    • Una llista d’enters amb les quantitats corresponents a cada producte, de manera que cada quantitat es troba a la mateixa posició d’aquesta llista que a la posició de la de codis de producte.

    • Una data (string) en format "DD/MM/AAAA"

    Per exemple:

    ["Anna Garcia Lopez", ["X34-Z1", "A12-B3", "C99-Q7"], [2, 0, 1], "12/06/2024"]
    

    Dissenya la següent funció i desa-la al fitxer comandes.py.

    productes_no_demanats(comanda)

    Retorna una llista de tuples (producte, inicial) pels productes amb quantitat igual a 0.

    Paràmetres:

    comanda (list) – Llista que representa la comanda d’un client.

    Retorna:

    Llista de tuples de parelles (producte, inicial) corresponents als productes amb quantitat igual a 0 i a on producte és el codi de producte i inicial la primera lletra del primer cognom del client.

    Tipus de retorn:

    list(tuple)

    Els següents doctests mostren exemples del que ha de fer la funció:

    >>> productes_no_demanats(["Anna Garcia Lopez", ["X34-Z1", "A12-B3", "C99-Q7"], [2, 0, 0], "12/06/2024"])
    [('A12-B3', 'G'), ('C99-Q7', 'G')]
    
    >>> productes_no_demanats(["Joan Torres Vila", ["P00-X", "Q11-Y"], [1, 0], "01/01/2025"])
    [('Q11-Y', 'T')]
    

    Nota

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

  2. D’altra banda, l’empresa disposa d’una llista de comandes amb les comandes de tots els clients i a on cada element és una llista de comandes d’un client com la descrita anteriorment. Per exemple:

    >>> comandes1 = [
    ...     ["Josep Nadal Roca", ["DDDD-zz", "EEEE-x"], [0, 3], "01/03/2024"],
    ...     ["Carla Ferrer Puig", ["HHHH-pp", "GGGG-oo"], [0, 4], "02/03/2024"],
    ...     ["Laura Ruiz Gomez", ["BBBB-mm", "CCCC-a", "AAAA-n"], [0, 0, 2], "03/03/2024"]
    ... ]
    

    Dissenya la següent funció i desa-la al fitxer comandes.py.

    incompletes(comandes)

    Retorna una llista de tuples (data, inicial, producte) per tots els productes amb quantitat igual a 0 de qualsevol dels clients.

    Paràmetres:

    comandes (list) – Llista de comandes.

    Retorna:

    Llista de tuples (data, inicial, producte) corresponents als productes amb quantitat igual a 0 i a on data és la data de la comanda, producte és el codi de producte i inicial la primera lletra del primer cognom del client. La llista estarà ordenada segons la segona part del codi de producte, en ordre descendent.

    Tipus de retorn:

    list(tuple)

    Aquesta funció ha de cridar a productes_no_demanats().

    La llista retornada estarà ordenada seguint l’ordre natural dels tuples (primer per data, després inicial, i després codi de producte).

    Els següents doctests mostren exemples del que ha de fer la funció:

    >>> comandes1 = [
    ...     ["Josep Nadal Roca", ["DDDD-zz", "EEEE-x"], [0, 3], "01/03/2024"],
    ...     ["Carla Ferrer Puig", ["HHHH-pp", "GGGG-oo"], [0, 4], "02/03/2024"],
    ...     ["Laura Ruiz Gomez", ["BBBB-mm", "CCCC-a", "AAAA-n"], [0, 0, 2], "03/03/2024"]
    ... ]
    >>> incompletes(comandes1)
    [('01/03/2024', 'N', 'DDDD-zz'), ('02/03/2024', 'F', 'HHHH-pp'), ('03/03/2024', 'R', 'BBBB-mm'), ('03/03/2024', 'R', 'CCCC-a')]
    

    Nota

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

Disposes de solucions al fitxer comandes.py.