Coral_1 ======= .. py:module::`coral.py` #. Una coral té emmagatzemada la informació dels seus cantaires en una llista de tuples. A cada tuple hi ha tres elements: el nom (string), el tipus de veu (string: 'soprano', 'contralt', 'tenor' o 'baix') i un indicatiu (booleà) de si el cantaire pot actuar com a solista (*True*) o no (*False*). Al mòdul :file:`coral.py`, dissenyeu la funció *dicc_solistes* que, a partir d'una llista d'aquestes característiques, calculi i retorni un diccionari les claus del qual siguin el tipus de veu i els valors una llista amb dos elements: el nombre de cantaires que tenen aquell tipus de veu i el nombre de cantaires amb aquell tipus de veu que poden actuar com a solistes. El diccionari haurà d'incloure sempre els quatre tipus de veu tot i que algun no aparegui a la llista. Per exemple: .. literalinclude:: test_solistes.txt :language: python :lines: 3-11 .. note:: Podeu descarregar el fitxer amb tests :download:`test_solistes.txt `. #. Aquesta coral disposa d'un diccionari per cada obra a representar amb la mateixa estructura que el descrit a l'apartat anterior. En aquest cas, els dos enters a les llistes de cada element del diccionari indiquen, respectivament, el nombre mínim de cantaires i solistes de cada corda necessaris per aquella obra. Dissenya la funció *representable* que rebi com a paràmetres un diccionari de les característiques de l'obtingut a l'apartat anterior i un altre diccionari corresponent a una obra i retorni *True* si la coral pot representar l'obra i *False* en cas contrari. Per exemple, .. literalinclude:: test_representable.txt :language: python :lines: 3- .. note:: Podeu descarregar el fitxer amb tests :download:`test_representable.txt `. .. rubric:: Solució Disposeu d'una solució al fitxer :download:`coral.py `.