Exercices de Code

Pratique Python, IA Engineering et bien plus avec des exercices interactifs et des tests automatiques.

Tous niveaux Debutant Intermediaire Avance
Tous les sujets Les Bases Python (71) Structures de données (40) Fonctions & Modules (106) POO (53) Architecture & Patterns (57) Algorithmes (47) Concepts Web & Django (50) IA & Data Science (22) Prompt Engineering (15) Projets guidés (81) Django Avancé (18) AI Engineering (19) Machine Learning (30) Entraîner son LLM (15) Computer Vision (18)

Suivre un parcours

Python Fondamental 3 sections
Developpeur Python 6 sections
Algorithmes & Entretiens 3 sections
Web & Django 4 sections
IA & Machine Learning 4 sections
IA Generative & RAG 5 sections
Automatisation & Scripts 5 sections
Neurosciences & IA 5 sections
Vision par Ordinateur 4 sections
Voir tous les exercices
Intermédiaire 🧠 Fondamentaux Fonctions & Modules

Fabrique de fonctions

Une fonction peut renvoyer une autre fonction. On appelle parfois ca une fabrique de fonctions (function factory). C'est comme un atelier qui produit des outils …

20 XP 0 réussites
Résoudre →
fabrique lambda higher-order
Intermédiaire 🧠 Fondamentaux Fonctions & Modules

Première closure

Une closure (fermeture en francais), c'est une fonction qui se souvient de l'environnement dans lequel elle a ete créée, meme apres que cet environnement a …

20 XP 0 réussites
Résoudre →
closure nonlocal intermediaire
Intermédiaire 🧠 Fondamentaux Fonctions & Modules

Closure avec historique

Les closures peuvent capturer n'importe quel type de donnee, pas seulement des nombres. On peut s'en servir pour créer des fonctions avec de la mémoire. …

20 XP 0 réussites
Résoudre →
closure mémoire accumulateur
Intermédiaire 🧠 Fondamentaux Fonctions & Modules

Importer dynamiquement

Parfois, tu ne sais pas a l'avance quel module tu veux importer. Le nom du module peut venir d'un fichier de configuration ou d'un choix …

20 XP 0 réussites
Résoudre →
importlib gétattr dynamique
Intermédiaire 🧠 Fondamentaux Fonctions & Modules GRATUIT

Decorateur qui vérifie le type

Les decorateurs sont tres utiles pour ajouter des vérifications sans modifier la fonction originale. Un cas courant : vérifier que les arguments passes sont du …

20 XP 0 réussites
Résoudre →
decorateur validation type
Intermédiaire 🧠 Fondamentaux Fonctions & Modules

Decorateur compteur d'appels

Les fonctions en Python sont des objets. Ca veut dire que tu peux leur ajouter des attributs, comme a n'importe quel objet. Par exemple, apres …

20 XP 0 réussites
Résoudre →
decorateur compteur attribut
Intermédiaire 🧠 Fondamentaux Fonctions & Modules

Decorateur avec functools.wraps

Quand tu utilises un decorateur, la fonction decoree perd son nom et sa docstring. Regarde : def mon_deco(func): def wrapper(*args, **kwargs): return func(*args, **kwargs) return …

20 XP 0 réussites
Résoudre →
decorateur wraps functools
Intermédiaire 🧠 Fondamentaux Fonctions & Modules GRATUIT

Decorateur de cache (memoization)

La memoization est une technique d'optimisation qui consiste a stocker les résultats d'appels précédents pour eviter de recalculer. C'est comme prendre des notes : au …

20 XP 0 réussites
Résoudre →
decorateur cache memoization
Intermédiaire 🧠 Fondamentaux Fonctions & Modules GRATUIT

Classe itérable : Compteur

Pour qu'un objet soit utilisable dans une boucle for, il doit respecter le protocole itérable. Ça veut dire qu'il doit avoir une méthode __iter__() qui …

20 XP 0 réussites
Résoudre →
iter next classe
Intermédiaire 🧠 Fondamentaux Fonctions & Modules

Générateur de Fibonacci

La suite de Fibonacci est une séquence où chaque nombre est la somme des deux précédents : 0, 1, 1, 2, 3, 5, 8, 13, …

20 XP 0 réussites
Résoudre →
fibonacci yield générateur
Intermédiaire 🧠 Fondamentaux Fonctions & Modules

Générateur de nombres premiers

Tu as peut-être déjà écrit une fonction qui renvoie la liste des nombres premiers. Avec un générateur, on peut faire mieux : au lieu de …

20 XP 0 réussites
Résoudre →
générateur premiers yield
Intermédiaire 🧠 Fondamentaux Fonctions & Modules GRATUIT

Expressions génératrices

Tu connais les compréhensions de listes : [x**2 for x in range(10)]. Elles créent une liste complète en mémoire. Si tu remplaces les crochets par …

20 XP 0 réussites
Résoudre →
expression génératrice sum mémoire
Intermédiaire 🧠 Fondamentaux Fonctions & Modules

Déléguer avec yield from

Parfois, un générateur a besoin de produire les valeurs d'un autre itérable. Tu pourrais écrire une boucle for avec yield dedans : def mon_generateur(): for …

20 XP 0 réussites
Résoudre →
yield from aplatir délégation
Intermédiaire 🧠 Fondamentaux Fonctions & Modules

Générateur infini

Un des grands avantages des générateurs, c'est qu'ils peuvent produire une séquence infinie. Comme les valeurs sont calculées à la demande, le générateur ne plante …

20 XP 0 réussites
Résoudre →
infini cycle yield
Intermédiaire 🧠 Fondamentaux Fonctions & Modules

Combiner filter et map

La vraie puissance de la programmation fonctionnelle, c'est quand tu combines filter() et map() ensemble. L'idee est simple : d'abord tu filtres les éléments qui …

20 XP 0 réussites
Résoudre →
filter map combinaison
Intermédiaire 🧠 Fondamentaux Fonctions & Modules GRATUIT

Somme avec reduce

reduce() est la troisieme grande fonction de la programmation fonctionnelle. Contrairement a filter() (qui selectionne) et map() (qui transforme), reduce() combine tous les éléments d'un …

20 XP 0 réussites
Résoudre →
reduce functools intermediaire
Intermédiaire 🧠 Fondamentaux Fonctions & Modules

IntEnum et comparaisons

Les Enum classiques ne supportent pas les comparaisons d'ordre (<, >, <=, >=). Si tu essaies Couleur.ROUGE < Couleur.BLEU, tu obtiens une erreur. Pour avoir …

20 XP 0 réussites
Résoudre →
IntEnum comparaison