Coral 2

Una coral té emmagatzemada la informació dels seus cantaires en un fitxer. A cada línia d’aquest fitxer hi ha tres dades, separades pel caràcter &, el nom, el tipus de veu (soprano, contralt, tenor o baix) i un indicatiu de si el cantaire pot actuar com a solista (True) o no (False). Per exemple:

Josefina&contralt&True
Pepet&baix&False
Josep&tenor&True
Fina&soprano&True
  1. Disenyeu la funció bolos que a partir del nom d’un fitxer d’aquestes característiques, d’un string que representa un tipus de veu i d’un enter, n, retorni True si hi ha al menys n cantaires amb el tipus de veu indicat que poden actuar com a solistes i False en cas contrari.

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

    >>> bolos('coral2.txt', 'soprano', 3)
    True
    >>> bolos('coral2.txt', 'baix', 2)
    False
    

    Nota

    Podeu descarregar el fitxer amb tests test_coral2_1.txt i el fitxer d’exemple coral2.txt.

  2. Dissenya la funció dicc_solistes que a partir del nom d’un fitxer d’aquestes característiques, obtingui i retorni un diccionari on la clau sigui el tipus de veu i el valor una llista amb els cantaires que tenen aquell tipus de veu i que poden actuar com a solistes. Aquesta llista ha d’estar ordenada alfabeticament.

    Desa la funció al mateix fitxer coral2.py de l’apartat anterior. La funció ha de passar el següent doctest:

    >>> d = dicc_solistes('coral2.txt')
    >>> d == {'baix': ['Xema'], 'soprano': ['Fina', 'Fineta', 'Pepeta'],
    ... 'tenor': ['Josemari', 'Josep', 'Pep'], 
    ... 'contralt': ['Josefina', 'Mariajosep']}
    True
    

    Nota

    Podeu descarregar el fitxer amb tests test_coral2_2.txt i el fitxer d’exemple coral2.txt.

Solucions

Disposeu de solucions al fitxer coral2.py