Saltar navegación

Reto 1: Xestor de playlist

Xestor de Playlist Musical

Duración:
50 min
Agrupamento:
2
Xestor de playlist
Copilot. Xestor de playlist (CC BY-SA)

Ides crear unha playlist con 10 cancións, cada unha con:

  • Nome da canción (lista de nomes ficticios).
    • # Lista de cancións ficticias
      cancions = np.array(["Ritmo Urbano", "Vento do Norte", "Noite Estrelada", "Eco e Son", "Ondas Salgadas","Viaxe Sen Fin", "Luz Interior", "Esfera Musical", "Voces do Futuro", "Aurora Mística"])
  • Duración en minutos (valores aleatorios entre 2.5 e 5.5 minutos) co método random.uniform
    • # Duracións aleatorias entre 2.5 e 5.5 minutos
      duracions = np.round(np.random.uniform(2.5, 5.5, size=10), 2)
  • Número de reproducións (valores aleatorios entre 100 e 5000) co método random.randit
    • # Número de reproducións aleatorias entre 100 e 5000
      reproducions = np.random.randint(100, 5001, size=10)

Tarefas:

  1. Extraer as 5 primeiras cancións da lista (slicing).
  2. Extraer só as cancións con duracións superiores a 4 minutos.(filtrado)
  3. Ordenar as cancións segundo o número de reproducións.( co método sort)⇒ reproducions_ordenadas = np.sort(reproducions)
  4. Mostrar a canción que máis se escoitou.⇒ usamos max() para atopar o maior número e list().index() para atopar a súa posición na lista

maior_reproducion = max(reproducions)# Obtén o maior número

posicion_maior = list(reproducions).index(maior_reproducion) # Atopa a posición
cancion_top = cancions[posicion_maior] # Usa a posición para atopar a canción

print(f"\nA canción máis escoitada é: {cancion_top} ")

Lembra:A IA está para axudarche, pregúntalle!

Exemplo de resultado esperado

Exemplo de resultado esperado

Playlist musical:
Ritmo Urbano - 4.13 min - 4357 reproducións
Vento do Norte - 3.89 min - 2795 reproducións
Noite Estrelada - 3.44 min - 4431 reproducións
Eco e Son - 5.03 min - 1477 reproducións
Ondas Salgadas - 4.28 min - 567 reproducións
Viaxe Sen Fin - 3.83 min - 4080 reproducións
Luz Interior - 4.79 min - 4414 reproducións
Esfera Musical - 5.46 min - 871 reproducións
Voces do Futuro - 2.8 min - 4183 reproducións
Aurora Mística - 4.92 min - 4333 reproducións

Primeiras 5 cancións da playlist:
['Ritmo Urbano' 'Vento do Norte' 'Noite Estrelada' 'Eco e Son'
'Ondas Salgadas']

Cancións con duración superior a 4 minutos:
['Ritmo Urbano' 'Eco e Son' 'Ondas Salgadas' 'Luz Interior'
'Esfera Musical' 'Aurora Mística']

Números de reproducións ordenados:
[ 567 871 1477 2795 4080 4183 4333 4357 4414 4431]

A canción máis escoitada é: Noite Estrelada

O método random.uniform en NumPy úsase para xerar números decimais aleatorios dentro dun rango específico.

A súa sintaxe básica é:

np.random.uniform(inicio, fin, tamaño)

Explicación:

inicio: Valor mínimo (incluído).

fin: Valor máximo (incluído).

tamaño (opcional): Número de valores que queremos xerar (pode ser un único número ou unha matriz).

Exemplos:

import numpy as np

# Xerar un número aleatorio entre 1.0 e 10.0

numero = np.random.uniform(1.0, 10.0)

print("Número aleatorio:", numero)

# Xerar unha matriz de 3x3 con valores entre 0.0 e 100.0

matriz = np.random.uniform(0.0, 100.0, (3, 3))

print("Matriz de números aleatorios:") print(matriz) 

Útil para simulacións, estatísticas e modelos que requiren valores continuos e non enteiros

O método randint en NumPy xérase números enteiros aleatorios dentro dun rango específico.

A súa sintaxe básica é:

np.random.randint(inicio, fin, tamaño)

Explicación:

inicio: Número mínimo (incluído).

fin: Número máximo (non incluído).

tamaño (opcional): Número de valores que queremos xerar.

Exemplos:

import numpy as np

# Xerar un número aleatorio entre 1 e 10

numero = np.random.randint(1, 10)

print("Número aleatorio:", numero)

# Xerar unha matriz de 3x3 con valores entre 0 e 100

matriz = np.random.randint(0, 100, (3, 3))

print("Matriz de números aleatorios:")

print(matriz)

Rúbrica de avaliación

Rúbrica Reto 1: Xestor de Playlist
Criterio Excelente (9-10) Bo (7-8) Aceptable (5-6) Mellorable(3-4) Moi mellorable(0-2)
Creación da playlist Lista xerada correctamente con 10 cancións, duracións e reproducións aleatorias. Lista xerada con pequenas imprecisións nos valores aleatorios. Lista xerada pero con erros evidentes nos cálculos. Playlist incompleta ou con datos erróneos que afectan o exercicio. Non xera a playlist correctamente ou non completa esta parte.
Uso de slicing para extraer cancións Extracción das 5 primeiras cancións realizada correctamente con slicing. Usa slicing pero con algunha pequena imprecisión. Usa outro método menos eficiente ou con erros. Non aplica slicing correctamente ou extrae elementos erróneos. Non realiza a extracción mediante slicing.
Filtrado de cancións por duración Filtrado correcto para seleccionar só as cancións de duración maior a 4 minutos. Filtrado ben feito pero con pequenas incorreccións na implementación. Filtrado realizado pero con erros que afectan a selección. Non aplica filtrado correctamente ou mostra resultados erróneos. Non realiza a selección de cancións por duración.
Ordenación por número de reproducións Ordenación correcta mediante o uso do método `sort()`. Ordena ben pero con pequenos problemas na implementación. Ordenación con métodos pouco eficientes ou con datos erróneos. Ordenación incorrecta ou con erros nos resultados. Non realiza a ordenación por número de reproducións.
Identificación da canción máis escoitada Uso correcto de `max()` e `index()` para atopar a canción máis reproducida. Atopa a canción máis escoitada pero con pequenos problemas no código. Uso de métodos pouco eficientes ou con resultados incorrectos. Erro ao determinar a canción con máis reproducións. Non realiza esta análise no código.
Actitude ante os problemas Actitude proactiva, busca solucións óptimas e melloras no código. Resolve os problemas con esforzo, aínda que precisa apoio puntual. Resolve con dificultades pero sen explorar melloras posibles. Pouco intento de solucionar problemas, resígnase ante os erros. Non intenta resolver os problemas ou abandona o traballo.
Traballo colaborativo Comunicación eficaz e traballo equilibrado en parella. Traballo en equipo con pequenas dificultades na colaboración. Interacción mínima, traballo case independente. Pouca colaboración, realízase gran parte do traballo de forma individual. Non colabora coa parella nin contribúe ao traballo conxunto.