Installing Python is not hard. It is just long enough, and uncertain enough, to end an evening. Pick a version, pick an installer, discover your PATH is wrong, read three answers about virtual environments written for a different operating system, and go to bed. Nothing was learned and the tab is still open. Installer Python n'est pas difficile. C'est simplement assez long, et assez incertain, pour ruiner une soirée. Choisir une version, choisir un installateur, découvrir que le PATH est mauvais, lire trois réponses sur les environnements virtuels écrites pour un autre système d'exploitation, puis aller se coucher. Rien n'a été appris et l'onglet est toujours ouvert.

PyLearnXP is 28 modules that skip that evening entirely. You open a lesson, type into an editor, press run, and a real CPython interpreter executes your code — compiled to WebAssembly and running inside the page. PyLearnXP, ce sont 28 modules qui évitent complètement cette soirée-là. On ouvre une leçon, on tape dans un éditeur, on lance, et un vrai interpréteur CPython exécute le code — compilé en WebAssembly et exécuté dans la page.

Real Python, not a simulationDu vrai Python, pas une simulation

The interpreter is Pyodide — CPython built for WebAssembly. That distinction matters more than it sounds. A JavaScript reimplementation of Python would diverge from the real thing exactly where a beginner needs it not to: integer division, string methods, the wording of a traceback. Here the traceback is the traceback. When you learn to read it, you have learned to read the one you will meet in a terminal later. L'interpréteur est Pyodide — CPython compilé pour WebAssembly. La nuance compte plus qu'il n'y paraît. Une réimplémentation de Python en JavaScript s'écarterait du vrai langage précisément là où un débutant a besoin qu'elle ne s'en écarte pas : la division entière, les méthodes de chaînes, la formulation d'une trace d'erreur. Ici, la trace est la vraie. Quand on apprend à la lire, on a appris à lire celle qu'on rencontrera plus tard dans un terminal.

It also means nothing you write leaves your machine. There is no execution server, so there is no queue, no cost per run, and no log of your half-finished attempts on somebody else's disk. Cela signifie aussi que rien de ce qu'on écrit ne quitte la machine. Il n'y a pas de serveur d'exécution, donc pas de file d'attente, pas de coût par exécution, et aucune trace de vos tentatives inachevées sur le disque de quelqu'un d'autre.

Click to zoomCliquer pour zoomer

The infinite loop problemLe problème de la boucle infinie

Every beginner writes while True: and forgets the exit. If the interpreter shares a thread with the page, that mistake freezes the tab, and the only recovery is closing it and losing the work. Which is a brutal punishment for the single most common error in the language. Tout débutant écrit while True: et oublie la sortie. Si l'interpréteur partage le fil d'exécution de la page, cette erreur gèle l'onglet, et la seule issue est de le fermer en perdant son travail. Une punition brutale pour l'erreur la plus courante du langage.

So Pyodide runs in a web worker on its own thread, and the page keeps a watchdog. If the worker has not answered by the deadline, the page terminates it outright and boots a fresh one. Your loop dies, the tab stays alive, your code is still in the editor, and the message says what happened. The runaway loop becomes a lesson instead of a loss. Pyodide s'exécute donc dans un web worker, sur son propre fil, et la page surveille l'horloge. Si le worker n'a pas répondu à l'échéance, la page le termine sans ménagement et en démarre un neuf. Votre boucle meurt, l'onglet survit, votre code est toujours dans l'éditeur, et le message explique ce qui s'est passé. La boucle folle devient une leçon plutôt qu'une perte.

If you are building something similar: a worker you can terminate is worth more than a clever attempt to detect the loop before it runs. You cannot reliably predict which programs halt — that is a famous result, not an engineering gap — but you can always give up waiting and start again. Si vous bâtissez quelque chose de semblable : un worker qu'on peut terminer vaut mieux qu'une tentative astucieuse de détecter la boucle avant l'exécution. On ne peut pas prédire de façon fiable quels programmes s'arrêtent — c'est un résultat célèbre, pas une lacune d'ingénierie — mais on peut toujours cesser d'attendre et recommencer.

Three ways to attempt the same thingTrois façons de tenter la même chose

Every exercise exists at three tiers, and they are worth different amounts of XP. Chaque exercice existe en trois paliers, qui valent des quantités différentes de XP.

Click to zoomCliquer pour zoomer

The point of the tiers is not difficulty for its own sake. It is that you get to choose how much help you take today without leaving the lesson, and the scoring is honest about the difference. Taking the scaffolded version on a bad day still counts. It just counts less, which is the correct amount. L'intérêt des paliers n'est pas la difficulté pour elle-même. C'est de pouvoir choisir combien d'aide on accepte aujourd'hui sans quitter la leçon, avec un pointage honnête sur la différence. Prendre la version guidée un mauvais jour compte quand même. Ça compte simplement moins, ce qui est exactement le bon montant.

What the curriculum coversCe que couvre le programme

Twenty-eight modules, twenty-five of them finished, running from variables and conditionals through functions, loops, strings, lists and dictionaries, then out into the parts people actually want: files, regular expressions, virtual environments, object-oriented programming, SQL, web scraping, decorators and generators, Git, testing, JSON and APIs, three modules of everyday automation, and a set of capstone projects. Roughly six hours of estimated material, in twelve-minute pieces. Vingt-huit modules, dont vingt-cinq terminés, allant des variables et des conditions jusqu'aux fonctions, boucles, chaînes, listes et dictionnaires, puis vers ce que les gens veulent vraiment : fichiers, expressions régulières, environnements virtuels, programmation orientée objet, SQL, extraction web, décorateurs et générateurs, Git, tests, JSON et API, trois modules d'automatisation du quotidien, et une série de projets de synthèse. Environ six heures de matière estimée, en tranches de douze minutes.

Twelve minutes is the deliberate unit. It is short enough to start without negotiating with yourself, which is the only part of studying that reliably fails. Douze minutes est l'unité choisie délibérément. C'est assez court pour commencer sans négocier avec soi-même, la seule étape de l'étude qui échoue de façon fiable.

Streaks, and their sharp edgeLes séries, et leur côté tranchant

There is XP, there are badges at three days, seven days, 100 XP and 500 XP, and there is a 25-minute focus timer with a five-minute break. All of it is standard, and all of it works — up to a point. Il y a des XP, des badges à trois jours, sept jours, 100 XP et 500 XP, et une minuterie de concentration de 25 minutes suivie d'une pause de cinq. Tout cela est classique, et tout cela fonctionne — jusqu'à un certain point.

The point is the day you break a streak. A counter that only ever rewards consecutive days turns one missed evening into a reason to stop entirely, and anyone who has abandoned a language app at day 34 knows the feeling precisely. So the streak here earns a badge and then gets out of the way. It is not on the dashboard as a headline number, nothing turns red, and the XP you have earned never decreases. Missing Tuesday costs you Tuesday. Ce point, c'est le jour où l'on brise sa série. Un compteur qui ne récompense que les journées consécutives transforme une soirée manquée en raison de tout arrêter, et quiconque a abandonné une application de langues au 34e jour connaît précisément la sensation. Ici, la série donne un badge puis s'efface. Elle ne trône pas sur le tableau de bord, rien ne devient rouge, et les XP accumulés ne diminuent jamais. Manquer un mardi ne coûte que le mardi.

The design rule underneath: reward the thing you want repeated, never punish its absence. A punishment for absence is only felt by the people already struggling to show up, which is exactly the group you built the thing for. La règle de conception sous-jacente : récompensez ce que vous voulez voir se répéter, ne punissez jamais son absence. Une punition pour absence n'est ressentie que par ceux qui peinent déjà à se présenter — précisément le public pour lequel l'outil a été bâti.

It is at /learn, it is free, and the first module runs about ten minutes. If Python has been on your list for a while, the honest test is whether you can start one before deciding whether you have time for it. C'est à /learn, c'est gratuit, et le premier module dure une dizaine de minutes. Si Python traîne sur votre liste depuis un moment, le vrai test est de savoir si vous pouvez en commencer un avant d'avoir décidé si vous en avez le temps.