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.
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.
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:
inferior a 3 minutos
entre 3 y 5 minutos (incluídas)
mayor a 5 minutos
Usa las letras ’a’, ’b’, y ’c’ como claves del diccionario.
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.
Apartado 1: 33 puntos.
Apartado 2: 33 puntos.
Apartado 3: 34 puntos.
>>> 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