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
Intermédiaire 🧠 Fondamentaux Fonctions & Modules

Protocole de sequence : __getitem__

Le protocole de sequence en Python repose sur deux méthodes speciales : __len__() et __getitem__(). Si ta classe implémente ces deux méthodes, tes objets se …

20 XP 0 réussites
Résoudre →
protocole __getitem__ sequence
Débutant 🧠 Fondamentaux Fonctions & Modules GRATUIT

Mon premier decorateur

Un decorateur, c'est une fonction qui prend une autre fonction en paramètre et renvoie une nouvelle fonction qui l'enveloppe. Imagine un cadeau : la fonction …

10 XP 0 réussites
Résoudre →
decorateur wrapper basique
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
Avancé 🧠 Fondamentaux Fonctions & Modules

Decorateur parametrise : repeter

Jusqu'ici, nos decorateurs ne prenaient pas de paramètres. Mais parfois, tu veux configurer le decorateur. Par exemple, repeter une fonction 3 fois, ou 5 fois, …

30 XP 0 réussites
Résoudre →
decorateur parametrise avance
Avancé 🧠 Fondamentaux Fonctions & Modules

Empiler des decorateurs

Tu peux empiler plusieurs decorateurs sur une meme fonction. L'ordre compte : le decorateur le plus proche de la fonction est applique en premier, puis …

30 XP 0 réussites
Résoudre →
decorateur empilement composition
Avancé 🧠 Fondamentaux Fonctions & Modules

Decorateur de retry

Dans la vraie vie, tu utilises souvent des decorateurs pour gerer les erreurs. Un pattern tres courant : le retry (reessayer). Si une fonction echoue, …

30 XP 0 réussites
Résoudre →
decorateur retry exception
Avancé 🧠 Fondamentaux Fonctions & Modules

Decorateur singleton pour une classe

Les decorateurs ne s'appliquent pas qu'aux fonctions. Tu peux aussi decorer des classes. Un cas d'utilisation classique : le pattern Singleton. Le Singleton garantit qu'une …

30 XP 0 réussites
Résoudre →
decorateur singleton classe
Avancé 🧠 Fondamentaux Fonctions & Modules

Decorateur d'autorisation (cas reel)

Pour finir cette serie, un exercice qui ressemble a ce qu'on fait dans la vraie vie. Dans une application web, tu veux souvent restreindre l'acces …

30 XP 0 réussites
Résoudre →
decorateur autorisation sécurité
Débutant 🧠 Fondamentaux Fonctions & Modules GRATUIT

Premiers pas avec iter et next

En Python, quand tu écris une boucle for sur une liste, il se passe quelque chose sous le capot. Python appelle d'abord iter() sur la …

10 XP 0 réussites
Résoudre →
iter next itérateur
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

Itérateur de nombres pairs

Maintenant que tu sais créer une classe itérable, on va en faire une plus utile. Le principe est le même : __iter__ renvoie self, __next__ …

20 XP 0 réussites
Résoudre →
itérateur classe pairs
Débutant 🧠 Fondamentaux Fonctions & Modules GRATUIT

Premier générateur avec yield

Les générateurs sont une manière beaucoup plus simple de créer des itérateurs. Au lieu d'écrire une classe avec __iter__ et __next__, tu écris une simple …

10 XP 0 réussites
Résoudre →
yield générateur débutant
Débutant 🧠 Fondamentaux Fonctions & Modules GRATUIT

Générateur de nombres pairs

Tu te souviens de la classe Pairs qu'on a écrite plus tôt ? Il fallait définir __init__, __iter__ et __next__, gérer StopIteration soi-même... C'était une …

10 XP 0 réussites
Résoudre →
yield générateur pairs
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

Consommer un générateur manuellement

Tu n'es pas obligé d'utiliser un for pour consommer un générateur. Tu peux appeler next() manuellement pour récupérer les valeurs une par une. C'est utile …

20 XP 0 réussites
Résoudre →
next générateur sentinelle
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
Avancé 🧠 Fondamentaux Fonctions & Modules

Coroutine : accumulateur avec send

Jusqu'ici, on a vu les générateurs comme des producteurs de données : ils produisent des valeurs avec yield. Mais yield peut aussi recevoir des valeurs. …

30 XP 0 réussites
Résoudre →
coroutine send yield
Intermédiaire 🧠 Fondamentaux Fonctions & Modules

Combiner des itérables avec itertools

Le module itertools de Python fournit plein d'outils pour travailler avec des itérables de manière efficace. Deux fonctions particulièrement utiles : itertools.chain(*iterables) enchaîne plusieurs itérables …

20 XP 0 réussites
Résoudre →
itertools chain islice
← Précédent Page 3 / 5 Suivant →