Skip to content

Série d'exercices : Traitement de données en tables


📋 Données de travail

Pour tous les exercices, nous utiliserons la table suivante représentant des films :

films = [
    {"titre": "Inception", "realisateur": "Nolan", "annee": 2010, "note": 8.8, "genre": "Science-fiction"},
    {"titre": "Interstellar", "realisateur": "Nolan", "annee": 2014, "note": 8.6, "genre": "Science-fiction"},
    {"titre": "Le Parrain", "realisateur": "Coppola", "annee": 1972, "note": 9.2, "genre": "Drame"},
    {"titre": "Pulp Fiction", "realisateur": "Tarantino", "annee": 1994, "note": 8.9, "genre": "Policier"},
    {"titre": "The Dark Knight", "realisateur": "Nolan", "annee": 2008, "note": 9.0, "genre": "Action"},
    {"titre": "Forrest Gump", "realisateur": "Zemeckis", "annee": 1994, "note": 8.8, "genre": "Drame"},
    {"titre": "Matrix", "realisateur": "Wachowski", "annee": 1999, "note": 8.7, "genre": "Science-fiction"},
    {"titre": "Gladiator", "realisateur": "Scott", "annee": 2000, "note": 8.5, "genre": "Action"}
]

🟢 Niveau 1 — Projection simple

Exercice 1 : Liste des titres

Écris une fonction extraire_titres(films) qui retourne la liste de tous les titres de films.

Résultat attendu :

["Inception", "Interstellar", "Le Parrain", "Pulp Fiction", ...]

👉 Objectif : parcourir une liste de dictionnaires et extraire une clé.


Exercice 2 : Années de sortie

Écris une fonction extraire_annees(films) qui retourne la liste de toutes les années de sortie (sans doublons).

Indice : Utilise un ensemble (set) pour éliminer les doublons, puis convertis en liste.

👉 Objectif : manipulation de sets pour éliminer les doublons.


Exercice 3 : Projection multiple

Écris une fonction extraire_titre_note(films) qui retourne une liste de dictionnaires contenant uniquement le titre et la note de chaque film.

Résultat attendu :

[
    {"titre": "Inception", "note": 8.8},
    {"titre": "Interstellar", "note": 8.6},
    ...
]

👉 Objectif : créer de nouveaux dictionnaires avec seulement certaines clés.


🟡 Niveau 2 — Sélection (Filtrage)

Exercice 4 : Films récents

Écris une fonction films_apres_2000(films) qui retourne la liste des films sortis après l'an 2000.

👉 Objectif : filtrer selon une condition numérique.


Exercice 5 : Films par réalisateur

Écris une fonction films_de_nolan(films) qui retourne la liste des films réalisés par "Nolan".

Bonus : Généralise en créant une fonction films_par_realisateur(films, realisateur) qui prend le nom du réalisateur en paramètre.

👉 Objectif : filtrer selon une condition sur une chaîne de caractères.


Exercice 6 : Films bien notés

Écris une fonction films_note_superieure(films, seuil) qui retourne les films ayant une note supérieure ou égale au seuil donné.

Exemple : films_note_superieure(films, 9.0) doit retourner "Le Parrain" et "The Dark Knight".

👉 Objectif : filtrage avec paramètre.


Exercice 7 : Films par genre

Écris une fonction films_par_genre(films, genre) qui retourne tous les films d'un genre donné.

Exemple : films_par_genre(films, "Science-fiction") doit retourner Inception, Interstellar et Matrix.

👉 Objectif : filtrage par catégorie.


🔵 Niveau 3 — Projection + Sélection

Exercice 8 : Titres des films de Nolan

Écris une fonction titres_nolan(films) qui retourne uniquement les titres des films réalisés par Nolan.

Résultat attendu :

["Inception", "Interstellar", "The Dark Knight"]

👉 Objectif : combiner filtrage et projection.


Exercice 9 : Années des films bien notés

Écris une fonction annees_films_excellents(films) qui retourne les années de sortie des films ayant une note supérieure ou égale à 9.0.

👉 Objectif : projection sur un sous-ensemble filtré.


Exercice 10 : Films d'action récents

Écris une fonction films_action_recents(films) qui retourne les films du genre "Action" sortis après 2005.

👉 Objectif : filtrage avec plusieurs conditions.


🟣 Niveau 4 — Agrégation

Exercice 11 : Nombre de films

Écris une fonction nombre_films(films) qui retourne le nombre total de films dans la table.

👉 Objectif : utiliser len().


Exercice 12 : Note moyenne

Écris une fonction note_moyenne(films) qui calcule et retourne la note moyenne de tous les films.

👉 Objectif : calculer une moyenne avec sum() et len().


Exercice 13 : Film le mieux noté

Écris une fonction meilleur_film(films) qui retourne le dictionnaire complet du film ayant la meilleure note.

Indice : Parcours la liste en gardant trace du film avec la note maximale.

👉 Objectif : recherche du maximum.


Exercice 14 : Film le plus ancien

Écris une fonction film_plus_ancien(films) qui retourne le titre du film le plus ancien.

👉 Objectif : recherche du minimum.


Exercice 15 : Comptage par réalisateur

Écris une fonction nombre_films_par_realisateur(films, realisateur) qui compte combien de films ont été réalisés par un réalisateur donné.

Exemple : nombre_films_par_realisateur(films, "Nolan") doit retourner 3.

👉 Objectif : comptage conditionnel.


🔴 Niveau 5 — Tri et opérations avancées

Exercice 16 : Tri par note

Écris une fonction trier_par_note(films) qui retourne la liste des films triés par note décroissante.

Indice : Utilise sorted() avec le paramètre key.

👉 Objectif : tri avec fonction lambda.


Exercice 17 : Tri par année

Écris une fonction trier_par_annee(films) qui retourne la liste des films triés par année croissante.

👉 Objectif : tri chronologique.


Exercice 18 : Top 3 des films

Écris une fonction top_3_films(films) qui retourne les 3 films les mieux notés.

Indice : Trie d'abord par note, puis prends les 3 premiers avec [:3].

👉 Objectif : combinaison tri + slicing.


Exercice 19 : Statistiques par genre

Écris une fonction note_moyenne_par_genre(films, genre) qui calcule la note moyenne des films d'un genre donné.

Exemple : note_moyenne_par_genre(films, "Science-fiction") doit calculer la moyenne de Inception, Interstellar et Matrix.

👉 Objectif : agrégation sur un sous-ensemble.


🔥 Niveau 6 — Challenge

Exercice 20 : Dictionnaire de réalisateurs

Écris une fonction grouper_par_realisateur(films) qui retourne un dictionnaire où : - Les clés sont les noms des réalisateurs - Les valeurs sont des listes de titres de films

Résultat attendu :

{
    "Nolan": ["Inception", "Interstellar", "The Dark Knight"],
    "Coppola": ["Le Parrain"],
    "Tarantino": ["Pulp Fiction"],
    ...
}

👉 Objectif : créer une structure de données complexe.


Exercice 21 : Lecture depuis un fichier CSV

Crée un fichier films.csv avec le contenu suivant :

titre,realisateur,annee,note,genre
Inception,Nolan,2010,8.8,Science-fiction
Interstellar,Nolan,2014,8.6,Science-fiction
Le Parrain,Coppola,1972,9.2,Drame

Écris une fonction charger_films(nom_fichier) qui lit ce fichier et retourne une liste de dictionnaires.

Indice : Utilise le module csv et csv.DictReader.

👉 Objectif : manipulation de fichiers CSV.


Exercice 22 : Analyse complète

Écris une fonction analyser_films(films) qui affiche : 1. Le nombre total de films 2. La note moyenne 3. Le film le mieux noté 4. Le film le plus ancien 5. Le réalisateur ayant le plus de films

👉 Objectif : combiner plusieurs opérations d'analyse.


💡 Conseils

  • Commence par les exercices de niveau 1 pour bien comprendre la structure
  • Teste tes fonctions avec des print() pour vérifier les résultats
  • N'hésite pas à utiliser des compréhensions de liste pour simplifier ton code
  • Pour les exercices avancés, décompose le problème en plusieurs étapes

Bon courage ! 🚀

Accueil