Autors teatrals

Un fitxer de text conté la informació de la programació de teatre d’una determinada temporada. En el fitxer hi ha una seqüència d’obres. Per cada obra hi ha tres etiquetes: “autor:”, “titol:”, i “sala:”. Després de cada etiqueta hi ha la informació corresponent. Per exemple, la informació d’una obra podria ser:

autor: Txekhov titol: L’Hort dels cirerers sala: Romea.

En el fitxer hi ha una obra per línia. Suposeu que les etiquetes no poden aparèixer en el títol de les obres. Per exemple, hi pot haver una obra que es tituli: “A la recerca d’un personatge”, però no una que es tituli: “Busca un autor:”. El contingut d’un fitxer podria ser:

autor: Txekhov titol: L'Hort dels cirerers sala: Romea
autor: Plaute titol: La comedia de l'olla sala: Villaroel
autor: Shakespeare titol: La comedia dels errors sala: TNC
autor: Galceran titol: El metode Gronholm  sala: Poliorama
autor: Shakespeare titol: Hamlet sala: Lliure

Pots descarregar aquest fitxer exemple programacio.txt

Desa les següents funcions al fitxer autors.py.

  1. Dissenyeu una funció anomenada obres que a partir del nom d’un fitxer d’aquestes característiques, calculi i retorni una llista d’obres, essent una obra un string amb la informació completa de l’autor, el títol i la sala, incloent les etiquetes. Pel fitxer de l’exemple, la funció hauria de retornar:

    ["autor: Txekhov titol: L'Hort dels cirerers sala: Romea", "autor: Plaute titol: La comedia de l'olla sala: Villaroel", 'autor: Shakespeare titol: La comedia dels errors sala: TNC', 'autor: Galceran titol: El metode Gronholm  sala: Poliorama', 'autor: Shakespeare titol: Hamlet sala: Lliure']
    
  2. Dissenyeu una funció anomenada autors que a partir d’una llista d’obres, retorni una llista d’autors. La llista d’autors retornada ha d’estar ordenada alfabèticament i no ha de contenir repeticions. Els noms d’autors no han de tenir espais en blanc al davant ni al darrera. Hi ha un mètode específic dels strings per a eliminar-los. Investigueu quin. A partir de la llista anterior, la funció hauria de retornar:

    ['Galceran', 'Plaute', 'Shakespeare', 'Txekhov']
    
  3. Dissenyeu una funció anomenada autors_obres que a partir del nom d’un fitxer d’aquestes característiques, calculi i retorni una llista d’autors. La llista d’autors retornada ha d’estar ordenada alfabèticament i no ha de contenir repeticions. A partir del fitxer anterior, la funció hauria de retornar:

    ['Galceran', 'Plaute', 'Shakespeare', 'Txekhov']
    

Pots descarregar un joc de proves a test-autors.txt i una solució a autors.py.