Comandes de clients =================== #. 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: .. code-block:: python ["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 :file:`comandes.py`. .. py:function:: productes_no_demanats(comanda) Retorna una llista de tuples *(producte, inicial)* pels productes amb quantitat igual a 0. :param list comanda: Llista que representa la comanda d'un client. :return: 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. :rtype: list(tuple) Els següents doctests mostren exemples del que ha de fer la funció: .. literalinclude:: test-productes-nodemanats.txt :lines: 3-7 .. note:: Disposes de més tests al fitxer :download:`test-productes-nodemanats.txt`. #. 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: .. literalinclude:: test-incompletes.txt :lines: 3-7 Dissenya la següent funció i desa-la al fitxer :file:`comandes.py`. .. py:function:: incompletes(comandes) Retorna una llista de tuples *(data, inicial, producte)* per tots els productes amb quantitat igual a 0 de qualsevol dels clients. :param list comandes: Llista de comandes. :return: 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. :rtype: list(tuple) Aquesta funció **ha de cridar** a :func:`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ó: .. literalinclude:: test-incompletes.txt :lines: 3-9 .. note:: Disposes de més tests al fitxer :download:`test-incompletes.txt`. Disposes de solucions al fitxer :download:`comandes.py`.