Niveau 02 — Conditions et boucles
Objectif du niveau
À la fin de ce niveau, tu sais écrire un programme qui décide (exécuter tel bloc si une condition est vraie, un autre sinon) et qui répète (refaire une action tant qu'une condition tient, ou pour chaque valeur d'une séquence). Tu sais combiner conditions et boucles pour construire de vrais petits programmes : menus, validation de saisie, compteurs, jeux de devinette. Tu sais aussi reconnaître et corriger les trois bugs de logique les plus courants : condition toujours vraie, boucle infinie, décalage d'une unité (off-by-one).
Prérequis
- Niveau 00 — environnement : lancer un script Python depuis le terminal, utiliser VS Code, faire un commit Git.
- Niveau 01 — bases :
print(), variables, types (int,float,str,bool),input()et conversions (int(...),float(...)), f-strings. - Notions clés à avoir en tête :
input()renvoie toujours une chaîne ; unboolvautTrueouFalse; l'indentation fait partie de la syntaxe.
Durée indicative et avertissement honnête
2 à 3 semaines à raison de 30–60 min par jour.
Honnêtement : la syntaxe de ce niveau est simple, mais c'est ici que commence la logique, et c'est là que la plupart des débutants trébuchent pour la première fois. Écrire if x == 5: s'apprend en cinq minutes ; savoir POURQUOI ta boucle ne s'arrête jamais, ou pourquoi ta condition est toujours vraie, prend des heures de pratique. C'est normal de passer du temps à déboguer : le débogage EST l'apprentissage de ce niveau. Prévois plus de temps sur les leçons 02-2 (while) et 02-5 (erreurs de logique) que sur les autres.
Leçons
Chaque leçon suit le template 16 sections (lessons/TEMPLATE_LECON.md).
| N° | Titre | Notions couvertes | Statut |
|---|---|---|---|
| 02-1 | if, elif, else — décider | Blocs conditionnels, indentation, comparaisons (==, !=, <, <=, >, >=), le piège == vs =, conditions imbriquées | ✅ disponible |
| 02-2 | Opérateurs logiques — combiner des conditions | and, or, not, tables de vérité, priorité des opérateurs, valeurs « truthy »/« falsy », le piège if x == 1 or 2 | ✅ disponible |
| 02-3 | while — répéter tant que | Boucle while, condition d'arrêt, compteurs, accumulateurs, validation de saisie, boucles infinies (les provoquer, les repérer, les stopper avec Ctrl+C) | ✅ disponible |
| 02-4 | for et range — répéter pour chaque | Boucle for, range(stop), range(start, stop), range(start, stop, step), parcourir une chaîne, break et continue, boucles imbriquées | ✅ disponible |
| 02-5 | Erreurs de logique — quand le programme tourne mais fait faux | Conditions toujours vraies/toujours fausses, off-by-one, mauvaise indentation qui change le sens, else mal accroché, méthode de débogage avec print() | ✅ disponible |
Solutions détaillées : solutions/ (une série par leçon).
Pièges et erreurs emblématiques du niveau
=au lieu de==dans une condition :if x = 5:est uneSyntaxError— Python te sauve ici, mais il faut comprendre la différence entre affecter et comparer.if x == 1 or 2:— toujours vrai, car2est « truthy ». Il faut écrireif x == 1 or x == 2:. L'erreur de logique la plus emblématique du niveau.- Boucle infinie : oublier de modifier la variable de condition dans un
while(while n > 0:sans jamais changern). Le programme « gèle » — savoir l'arrêter avec Ctrl+C et le diagnostiquer. - Off-by-one : croire que
range(10)va jusqu'à 10 (il s'arrête à 9), ou boucler une fois de trop / de moins. Se corrige en écrivant les premières et dernières valeurs à la main. - Comparer une chaîne à un nombre :
input()renvoie"5", pas5;"5" == 5vautFalsesans erreur. Bug silencieux classique. - Indentation qui change le sens : une ligne dé-indentée sort du
ifou de la boucle sans message d'erreur — le programme fait autre chose que prévu.
Mini-projets du niveau
Fiches détaillées dans /projects.
- Jeu de devinette — l'ordinateur choisit un nombre, l'utilisateur devine, le programme répond « plus grand / plus petit » et compte les essais.
- Menu de caisse — boucle de menu (
1. ajouter,2. total,3. quitter) avec validation de la saisie et cumul d'un total. - Table de multiplication à trous — génère des questions avec
range, vérifie les réponses, affiche un score final.
Critères de sortie
- Je sais écrire un
if/elif/elseà trois branches sans modèle sous les yeux. - Je sais expliquer la différence entre
=et==et repérer l'erreur dans du code. - Je sais combiner des conditions avec
and,or,notet prédire le résultat. - Je sais écrire un
whileavec une condition d'arrêt correcte, et je sais provoquer puis corriger une boucle infinie. - Je sais utiliser
rangesous ses trois formes et dire quelles valeurs il produit. - Je sais quand utiliser
breaketcontinue— et quand ne pas en abuser. - Je sais valider une saisie utilisateur en boucle (redemander tant que c'est invalide).
- Devant un programme qui tourne mais donne un résultat faux, je sais poser des
print()pour trouver où la logique dévie.
Commit de fin de niveau
git add lessons/level-02-conditions-boucles
git commit -m "exercises: complete level 02 (conditions and loops)"