Hola, ¿qué tal? en este tutorial quiero enseñarte una menara muy fácil de crear una biblioteca de enlaces a nuestras canciones favoritas, en ella podras aplicar muchos de los conocimientos vistos hasta ahora en el curso.
Pues bueno, empecemos.
1. Creación de la lista de diccionarios
Lo primero que debemos de hacer es crear una lista que llamaremos << songs >> y esta lista va a almacenar diccionarios, cada uno con las llaves: << name >> , << artist >> & << link >>, esto te debería quedar de la siguiente manera:
songs = [
{
'name': 'Billie Jean',
'artist': 'Michael Jackson',
'link': 'https://www.youtube.com/watch?v=Zi_XLOBDo_Y&ab_channel=michaeljacksonVEVO'
}
]
Aquí es donde vas a agregar algunas de tus canciones favoritas! cada una en un diccionario diferente dentro de la lista llamada << songs >>.
2. Imprimiendo en pantalla el diccionario
Ahora veamos como visualizar nuestra biblioteca.
Comencemos con imprimir un titulo, por ejemplo: “Tus canciones” o algo así, a continuación empleando un ciclo << for >> vamos a iterar una variable llamada << i >>, dentro de la lista << songs >>, por lo que esta variable i estaría tomando el valor de cada diccionario en cada iteración, es decir tendría los datos de tus canciones.
Con lo anterior en mente, nos damos cuenta que << i >> viene a ser una variable de tipo diccionario, por ello manejemosla adecuadamente para su impresión. Utilizando la funcion << print >> y la función << .format >> demosle un formato apropiado según lo visto en las clases pasadas: te debería quedar algo parecido a esto, aquí tu puedes poner de tu propia mano.
print("----- Tus canciones -----\n")foriin songs:
print(' Canción: {} \n Artista: {} \n Enlace: {}\n'.format(i['name'], i['artist'], i['link']))
Como te podrás dar cuenta, ya que conocemos las << keys >> de los diccionarios solo debemos pasarlos como índices de la variable << i >>
3. ¿Y si queremos agregar más canciones a la biblioteca sin tener que agregarlas directamente en código?
¿Qué pasa si no queremos ir al codigo a agregar más canciones programandolas? podemos hacer la entrada de estas canciones a través de la terminal y irlas agregando a la lista en forma de diccionarios.
Primero preguntemos si queremos agregar más canciones, esto con la función << input >>
Es recomendable que guardemos nuestras opciones que consideramos unicamente válidas en una tupla. Lo hacemos con un variable << ops >>
ops = ('si', 'no')
Entonces hacemos la pregunta y la guardamos en una variable llamada << add >>, la pasamos a minuscula para evitar que sea escrito con mayusculas o ambas. luego comprobamos si dicha respuesta se encuentra dentro de nuestras opciones validas, si o no. En caso afirmativo procedemos a revisar si la respuesta fue si o no, y dependiendo de ello, actuaremos. Lo anterior debería qudarte mas o menos de esta manera:
add = input("¿Quieres agregar una canción a tu biblioteca? si/no >> ")
add = add.lower()
ifaddin ops:
ifadd == 'si':
Por lo tanto en el caso de que si se quiera agregar una canción, seguimos con la petición de sus datos en tres variables, << song_name >>, << artist_name >> y << web_link >>
song_name = input("Nombre de la canción: ")
artist_name = input("Nombre del artista: ")
web_link = input("Enlace web: ")
Una vez tengamos los datos ya solo queda juntarlos en forma de diccionario y añadirlo a la lista, esto lo haremos mediante la función << append >> para las listas y como dato le pasaremos el diccionario con las debidas claves << name >> << artist >> y << link >> y como valor respectivamente << song_name >>, << artist_name >> y << web_link >>
songs.append({'name':song_name.title(), 'artist':artist_name.title(), 'link':web_link})
Notese que aplicamos la función << .tittle() >> para strings con el fin de asegurar que el nuestros datos tengan mayúscula al inicio de cada palabra.
Ahora damos en mensaje de actualización y volvemos a imprimir la lista de canciones:
print("\n\n---- ACTUALIZADO ---- \n\n")
print("----- Tus canciones -----\n")
foriin songs:
print(' Canción: {} \n Artista: {} \n Enlace: {}\n'.format(i['name'], i['artist'], i['link']))
El programa en su totalidad puede quedarte de la siguiente manera:
songs = [
{
'name': 'Billie Jean',
'artist': 'Michael Jackson',
'link': 'https://www.youtube.com/watch?v=Zi_XLOBDo_Y&ab_channel=michaeljacksonVEVO'
},
{
'name': 'Stairway To Heaven',
'artist': 'Led Zeppelin',
'link': 'https://www.youtube.com/watch?v=QkF3oxziUI4&ab_channel=LedZeppelin'
},
{
'name': 'Wandering Star',
'artist': 'Portishead',
'link': 'https://www.youtube.com/watch?v=8T0cRt8efsQ&ab_channel=Portishead-Topic'
},
{
'name': 'The Less I Know the Better',
'artist': 'Tame Impala',
'link': 'https://www.youtube.com/watch?v=2SUwOgmvzK4&ab_channel=tameimpalaVEVO'
}
]
print("----- Tus canciones -----\n")foriin songs:
print(' Canción: {} \n Artista: {} \n Enlace: {}\n'.format(i['name'], i['artist'], i['link']))
ops = ('si','no')
add = input("¿Quieres agregar una canción a tu biblioteca? si/no >> ")
add = add.lower()
if add in ops:
if add == 'si':
song_name = input("Nombre de la canción: ")
artist_name = input("Nombre del artista: ")
web_link = input("Enlace web: ")
songs.append({'name':song_name.title(), 'artist':artist_name.title(), 'link':web_link})
print("\n\n---- ACTUALIZADO ---- \n\n")
print("----- Tus canciones -----\n")
foriin songs:
print(' Canción: {} \n Artista: {} \n Enlace: {}\n'.format(i['name'], i['artist'], i['link']))
else:
print("opción inválida")
4. Notas finales
Listo, ya tienes una forma de almacenar enlaces a tus canciones favoritas, aunque cabe destacar que aunque agregues mas canciones directamente en la ejecución y no programandolas, estas no se guardarán, pues serán eliminadas una vez termine la ejecución. Una solución a esto podremos aprenderla más tarde.