- Ajout des 10 TPs d'évaluation (sans PDF) - Création GLOSSAIRE.md et AMELIORATIONS.md - Corrections f-strings, eval(), sommaires Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
3.3 KiB
3.3 KiB
Aide - TP01 Spotify
Rappels utiles
Acceder aux elements d'un dictionnaire
chanson = {"titre": "Blinding Lights", "artiste": "The Weeknd", "duree": 203}
print(chanson["titre"]) # Blinding Lights
print(chanson.get("note", 0)) # 0 (valeur par defaut si cle absente)
Convertir des secondes en minutes:secondes
duree = 203 # secondes
minutes = duree // 60 # Division entiere
secondes = duree % 60 # Reste (modulo)
print(minutes, ":", secondes) # 3 : 23
Parcourir une liste de dictionnaires
for chanson in catalogue:
print(chanson["titre"])
Exercice 1
1.1 - Affichage formate
- Utilisez print() avec des virgules :
print("Titre:", titre) - Pour le formatage minutes:secondes, pensez a
//et% - Concatenation avec
+si besoin :str(minutes) + ":" + str(secondes)
1.2 - Statistiques
- Initialisez un dictionnaire vide pour le resultat
- Parcourez la liste avec une boucle for pour calculer la somme
round(valeur)arrondit a l'entier
total = 0
for chanson in catalogue:
total = total + chanson["duree"]
1.3 - Artistes uniques
- Parcourez et ajoutez dans une liste si pas deja present
sorted(liste)trie par ordre alphabetique
artistes = []
for chanson in catalogue:
if chanson["artiste"] not in artistes:
artistes.append(chanson["artiste"])
artistes.sort()
Exercice 2
2.1 - Recherche
- Utilisez
if critere == "artiste":pour differencier les cas - Pour la recherche insensible a la casse :
"star".lower() in titre.lower() - Renvoyez une nouvelle liste (ne modifiez pas l'originale)
2.2 - Ajouter/Retirer
- Pour verifier si un titre existe deja :
for chanson in playlist:
if chanson["titre"] == nouveau_titre:
return False # Deja present
- Pour retirer, parcourez avec l'indice :
for i in range(len(playlist)):
if playlist[i]["titre"] == titre:
playlist.pop(i)
return True
2.3 - Top artistes
- Creez d'abord un dictionnaire
{artiste: total_streams} - Parcourez le catalogue et cumulez les streams
- Triez avec
sorted(dico.items(), key=lambda x: x[1], reverse=True)
compteur = {}
for chanson in catalogue:
artiste = chanson["artiste"]
if artiste not in compteur:
compteur[artiste] = 0
compteur[artiste] = compteur[artiste] + chanson["streams"]
Exercice 3 (Bonus)
3.1 - Filtrage
# Filtrer les chansons courtes
resultat = []
for chanson in catalogue:
if chanson["duree"] < 200:
resultat.append(chanson["titre"])
3.2 - Recommandations
- D'abord, recuperez les artistes de la playlist utilisateur
- Ensuite, filtrez le catalogue pour ces artistes
- Excluez les chansons deja dans la playlist
- Triez par streams decroissant
3.3 - Playlist automatique
- Triez d'abord le catalogue par streams decroissant
- Parcourez et ajoutez si
duree_actuelle + chanson["duree"] <= duree_cible + tolerance - Arretez quand
duree_actuelle >= duree_cible - tolerance
Pieges a eviter
- Ne pas modifier la liste originale lors des recherches
- Attention aux comparaisons de chaines : utilisez
.lower()pour ignorer la casse - Division par zero : verifiez que la liste n'est pas vide avant de calculer une moyenne
- Arrondi :
round(x, 2)pour 2 decimales,round(x)pour un entier