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
Avancé 🧠 Fondamentaux Architecture & Patterns

JSONEncoder personnalise

Par défaut, json.dumps() sait serialiser les types de base Python (dict, list, str, int, float, bool, None). Mais si tu lui passes un objet custom, …

30 XP 0 réussites
Résoudre →
json JSONEncoder serialisation
Intermédiaire 🧠 Fondamentaux Architecture & Patterns

Dataclass serialisable

Les dataclasses sont un raccourci Python pour créer des classes qui stockent des données. Au lieu d'écrire __init__, __repr__, __eq__ a la main, le decorateur …

20 XP 0 réussites
Résoudre →
dataclass asdict serialisation
Débutant 🧠 Fondamentaux Architecture & Patterns GRATUIT

Explorer le dictionnaire d'un objet

En Python, chaque objet possede un dictionnaire interne appele __dict__ qui contient tous ses attributs d'instance. C'est comme un carnet ou Python note tout ce …

10 XP 0 réussites
Résoudre →
__dict__ introspection debutant
Débutant 🧠 Fondamentaux Architecture & Patterns GRATUIT

Ajouter un attribut a la volee

En Python, tu peux ajouter des attributs a un objet apres sa création. C'est la nature dynamique du langage. Tu n'es pas oblige de tout …

10 XP 0 réussites
Résoudre →
sétattr dynamique debutant
Débutant 🧠 Fondamentaux Architecture & Patterns GRATUIT

Vérifier et lire des attributs

Python fournit trois fonctions pour manipuler les attributs d'un objet de maniere programmatique : hasattr(obj, nom) : renvoie True si l'objet possede un attribut avec …

10 XP 0 réussites
Résoudre →
gétattr hasattr debutant
Débutant 🧠 Fondamentaux Architecture & Patterns GRATUIT

Le piege des valeurs falsy

En Python, certaines valeurs sont considerees comme "fausses" (falsy) quand on les utilise dans une condition. Ce sont : False, 0, 0.0, la chaine vide …

10 XP 0 réussites
Résoudre →
falsy truthy bool
Débutant 🧠 Fondamentaux Architecture & Patterns GRATUIT

Référence de fonction vs appel de fonction

En Python, les fonctions sont des objets comme les autres. Tu peux les assigner a des variables, les passer en argument, etc. Mais il y …

10 XP 0 réussites
Résoudre →
callable fonction référence
Intermédiaire 🧠 Fondamentaux Architecture & Patterns

Le piege du paramètre mutable par défaut

C'est probablement le piege le plus celebre de Python. Quand tu donnes une valeur par défaut mutable (comme une liste) a un paramètre de fonction, …

20 XP 0 réussites
Résoudre →
mutable-default piege intermediaire
Intermédiaire 🧠 Fondamentaux Architecture & Patterns

Portee locale vs globale

En Python, quand tu assignes une valeur a une variable dans une fonction, Python considere cette variable comme locale a la fonction. Ca veut dire …

20 XP 0 réussites
Résoudre →
nonlocal closure scope
Intermédiaire 🧠 Fondamentaux Architecture & Patterns

Ajouter une méthode a une classe (monkey patching)

Le monkey patching, c'est modifier une classe ou un module apres sa création, en lui ajoutant ou remplacant des méthodes ou des attributs. Le terme …

20 XP 0 réussites
Résoudre →
monkey-patching classe méthode
Intermédiaire 🧠 Fondamentaux Architecture & Patterns

Intercepter les attributs manquants avec __gétattr__

Quand tu accedes a un attribut d'un objet (par exemple obj.nom), Python suit un processus precis. Il cherche d'abord dans l'instance, puis dans la classe, …

20 XP 0 réussites
Résoudre →
gétattr attribut classe-speciale
Avancé 🧠 Fondamentaux Architecture & Patterns

Controler l'écriture d'attributs avec __sétattr__

La méthode __sétattr__ est appelee A CHAQUE FOIS qu'on assigne un attribut a un objet, y compris dans __init__. C'est donc plus puissant (et plus …

30 XP 0 réussites
Résoudre →
sétattr immutable classe-speciale
Intermédiaire 🧠 Fondamentaux Architecture & Patterns

Créer un context manager

Un context manager, c'est un objet qui definit un contexte d'execution. Tu l'utilises avec le mot-cle with. L'exemple le plus courant est l'ouverture de fichier …

20 XP 0 réussites
Résoudre →
context-manager with intermediaire
Intermédiaire 🧠 Fondamentaux Architecture & Patterns

Context manager avec un générateur

Écrire une classe avec __enter__ et __exit__ peut etre un peu lourd pour des cas simples. Python propose un raccourci avec le decorateur contextmanager du …

20 XP 0 réussites
Résoudre →
contextmanager contextlib intermediaire
Intermédiaire 🧠 Fondamentaux Architecture & Patterns

Propriétés calculées avec property

Le decorateur @property permet de definir des attributs calcules. L'avantage, c'est que du point de vue de l'utilisateur, ca ressemble a un simple attribut, mais …

20 XP 0 réussites
Résoudre →
property getter setter
Avancé 🧠 Fondamentaux Architecture & Patterns

Objet avec historique des modifications

Maintenant qu'on connait __sétattr__, on peut l'utiliser pour des choses plus interessantes que bloquer des modifications. Par exemple, garder un historique de toutes les modifications …

30 XP 0 réussites
Résoudre →
sétattr historique metaprogrammation
Avancé 🧠 Fondamentaux Architecture & Patterns

Proxy transparent avec __gétattr__

Un pattern courant en programmation, c'est le Proxy : un objet qui se comporte comme un autre objet, mais qui ajoute un comportement supplémentaire (logging, …

30 XP 0 réussites
Résoudre →
proxy gétattr pattern
Avancé 🧠 Fondamentaux Architecture & Patterns

Emulation de conteneur

Python te permet de faire en sorte que tes propres classes se comportent comme des types natifs (listes, dictionnaires...) en implementant des méthodes speciales. Pour …

30 XP 0 réussites
Résoudre →
__getitem__ __setitem__ protocole
Avancé 🧠 Fondamentaux Architecture & Patterns

Classe avec validation automatique des types

En combinant __sétattr__ et un système de declaration de types, on peut créer des classes qui valident automatiquement les types des attributs a l'assignation. C'est …

30 XP 0 réussites
Résoudre →
sétattr validation types
Avancé 🧠 Fondamentaux Architecture & Patterns

Registre de données avec validation automatique

Pour terminer cette serie, on va combiner plusieurs techniques avancees dans un cas realiste. Imagine que tu construis un système de configuration ou de registre …

30 XP 0 réussites
Résoudre →
context-manager validation pattern
Débutant 🧠 Fondamentaux Architecture & Patterns GRATUIT

Écrire un premier test assert

En entreprise, un code sans tests c'est une bombe a retardement. Tu modifies une fonction un vendredi soir, et lundi matin toute l'appli est cassee. …

10 XP 0 réussites
Résoudre →
testing assert debutant
Débutant 🧠 Fondamentaux Architecture & Patterns GRATUIT

Structurer ses tests en fonctions

Sur un vrai projet, tu vas avoir des centaines de tests. Si tu les mets tous en vrac dans un script, ca devient vite illisible. …

10 XP 0 réussites
Résoudre →
testing structure convention
Débutant 🧠 Fondamentaux Architecture & Patterns GRATUIT

Tester les cas limites

Les bugs qui arrivent en production, ce ne sont presque jamais les cas normaux. C'est toujours la liste vide que personne n'a testee, le nombre …

10 XP 0 réussites
Résoudre →
testing edge-cases cas-limites
Débutant 🧠 Fondamentaux Architecture & Patterns

Tester les exceptions

Un code qui echoue silencieusement au lieu de lever une erreur, c'est un cauchemar a debugger. Si ta fonction diviser(a, b) retourne 0 au lieu …

10 XP 0 réussites
Résoudre →
testing exceptions try-except
← Précédent Page 2 / 3 Suivant →