GreatNoise X47293


Statement
 

pdf   zip

html

La plataforma musical GreatNoise.com quiere mejorar el servicio que ofrece a sus suscriptores. Para ello, añadirá diferentes funcionalidades que los usuarios podrán utilizar en sus listas de reproducción.

Una lista de reproducción consiste en una lista de una o más canciones, que son a la vez listas con los siguientes elementos:

  • Título de la canción (str)
  • Autor o grupo (str)
  • Nombre del álbum (str)
  • Duración en segundos (int)

Los tres enunciados a continuación están relacionados pero pueden resolverse de manera independiente, sin depender cualquiera de ellos de la solución de los otros.

  1. GreatNoise.com quiere mostrar la duración total de una lista de reproducción. Programa una función calcula_duracion(lista_reproduccion) que a partir de lista_reproduccion, una lista como las descritas al inicio, retorne la duración total en minutos y segundos de la lista proporcionada.
  2. GreatNoise.com también quiere que el usuario tenga más información sobre las canciones añadidas en la lista. Programa una función clasificar_duracion(lista_reproduccion) que, a partir de lista_reproduccion, una lista como las descritas al inicio, retorne un diccionario que cuente por duración las canciones de la lista según el criterio siguiente:
    1. inferior a 3 minutos
    2. entre 3 y 5 minutos (incluídas)
    3. mayor a 5 minutos

    Usa las letras ’a’, ’b’, y ’c’ como claves del diccionario.

  3. Finalmente, GreatNoise.com quiere calcular estadísticas sobre las listas de reproducción. Programa una función estadisticas(lista_reproduccion) que a partir de lista_reproduccion, una lista como las descritas al inicio, retorne un diccionario que asocie los títulos de las canciones de la lista de reproducción con una lista compuesta por el autor y todos los álbumes (se pueden repetir) donde aparece la canción en la lista de reproducción.

Puntuación

Apartado 1: 33 puntos.

Apartado 2: 33 puntos.

Apartado 3: 34 puntos.

Sample session
>>> lista = [["Higher", "Creed", "Greatest Hits", 316],
...          ["Basket Case", "Green Day", "Dookie", 182],
...          ["Glycerine", "Bush", "Sixteen Stone", 266],
...          ["Congregation", "Foo Fighters", "Sonic Highways", 312],
...          ["Blackbird", "Alter Bridge", "Blackbird", 478],
...          ["Basket Case", "Green Day", "God's FB", 182],
...          ["Fuck You", "Bad Religion", "True North", 134],
...          ["Higher", "Creed", "Human Clay", 316]]
>>> calcula_duracion(lista)
(36, 26)

>>> clasificacion = clasificar_duracion(lista)
>>> clasificacion == {'a': 1, 'b': 3, 'c': 4}
True

>>> lista = [["Higher", "Creed", "Greatest Hits", 316],
...          ["Basket Case", "Green Day", "Dookie", 182],
...          ["Glycerine", "Bush", "Sixteen Stone", 266],
...          ["Congregation", "Foo Fighters", "Sonic Highways", 312],
...          ["Blackbird", "Alter Bridge", "Blackbird", 478],
...          ["Basket Case", "Green Day", "God's FB", 182],
...          ["Fuck You", "Bad Religion", "True North", 134],
...          ["Higher", "Creed", "Human Clay", 316]]
>>> canciones = estadisticas(lista)
>>> canciones == {'Higher': ['Creed', 'Greatest Hits', 'Human Clay'],
...               'Basket Case': ['Green Day', 'Dookie', "God's FB"],
...               'Glycerine': ['Bush', 'Sixteen Stone'],
...               'Congregation': ['Foo Fighters', 'Sonic Highways'],
...               'Blackbird': ['Alter Bridge', 'Blackbird'],
...               'Fuck You': ['Bad Religion', 'True North']}
True
Information
Author
InfBesos
Language
Spanish
Other languages
Catalan English
Official solutions
Python
User solutions
Python