← Bibliothèque · BOOST · Python sans paniquer
0/0 ⬇
Collection « Challenges » · Apprendre à coder en Python · Étudiants · Boost

Python sans paniquer — 5 jours pour comprendre ce que tu tapes

Tu as des TP en Python et tu recopies du code sans le comprendre ? En cinq jours, tu maîtrises les bases (variables, conditions, boucles, erreurs) et tu écris toi-même un script utile pour tes cours : ton calculateur de moyennes.

5 épisodes · 5 jours1 épisode par jourBasthon, Capytale ou Thonny≈ 20 min / épisode
BOOST · 5 JOURSMaîtriser les bases et écrire un premier script utile pour tes cours.
PRO · 20 JOURSFonctions, données, fichiers, graphiques et Git pour réussir tes TP.
MASTER · 4 MOISConcevoir un projet testé et publié, raisonner sur les algorithmes, aider tes pairs.
Le fil rouge. Yanis, 18 ans, en 1re année de licence de sciences de la vie (personnage fictif). Ses TP d'analyse de données en Python l'angoissent : il recopie du code qu'il ne comprend pas. Il progresse avec toi, jour après jour.
Chaque épisode = un scénario, une notion ou une méthode, ce que disent les sources, des idées reçues, un quiz, ton kit et ton journal.
Tes données restent chez toi. Ta progression et ton journal sont enregistrés seulement dans ce navigateur. Dans les exercices, utilise des notes inventées, jamais celles d'une autre personne.
Règle d'or. Un code que tu ne comprends pas, tu ne le lances pas… et tu ne le rends pas en TP.
01
JOUR 1 · Comprendre

Un programme, c'est un calcul que tu sais déjà faire

Passer d'un calcul que tu fais à la main à un algorithme, puis à quelques lignes de Python : variables, types, opérateurs, conversions.

⏱ 15 min de lecture · 5 min de quiz
[1]Scénario
Yanis · Lundi, 8 h

Premier TP d'analyse de données. L'enseignante projette un script de 40 lignes et demande de le faire tourner. Yanis le recopie caractère par caractère, comme au lycée, sans savoir ce que fait une seule ligne. À la pause, il calcule sa moyenne du semestre sur son téléphone : chaque note multipliée par son coefficient, on additionne, on divise par la somme des coefficients. Awa, sa binôme, regarde par-dessus son épaule : « Tu vois que tu sais programmer ? Ça, c'est un algorithme. »

[2]Concept

Du calcul à la main au programme

Programme, algorithme, langage. Un algorithme est une suite d'étapes précises qui résout un problème. Celui de Yanis :

  1. multiplier chaque note par son coefficient ;
  2. additionner ces produits ;
  3. additionner les coefficients ;
  4. diviser la première somme par la deuxième.

Un langage est une façon d'écrire ces étapes pour qu'un ordinateur les exécute ; un programme est l'algorithme écrit dans ce langage. Python exécute les lignes dans l'ordre, de haut en bas.

Code
note_maths = 12
note_bio = 15.5
note_chimie = 8
coef_maths = 2
coef_bio = 3
coef_chimie = 1
total = note_maths * coef_maths + note_bio * coef_bio + note_chimie * coef_chimie
somme_coefs = coef_maths + coef_bio + coef_chimie
moyenne = total / somme_coefs
print(moyenne)
print(round(moyenne, 2))

Affiche 13.083333333333334, puis 13.08.

Les variables. note_maths = 12 pose le nom note_maths sur la valeur 12. Le signe = range une valeur ; il ne compare pas. Une variable peut changer : note = note + 4 calcule note + 4, puis range le résultat dans note. Les noms s'écrivent en minuscules, sans espace ni accent, avec _ entre les mots.

Les types de base.

TypeExempleCe que c'est
int12un nombre entier
float15.5un nombre à virgule (écrit avec un point)
str"12"du texte (entre guillemets), même s'il ressemble à un nombre
bool12 > 10vrai ou faux : True ou False

type(…) donne le type d'une valeur : print(type(12), type(15.5), type("12"), type(12 > 10)) affiche <class 'int'> <class 'float'> <class 'str'> <class 'bool'>.

Les opérateurs et les priorités.

OpérateurSensExempleRésultat
+ - *addition, soustraction, multiplication2 * 36
/division (donne toujours un float)7 / 23.5
//division entière7 // 23
%reste de la division entière7 % 21
**puissance2 ** 38

Comme en maths, * et / passent avant + et - : 12 + 15 / 2 vaut 19.5, alors que (12 + 15) / 2 vaut 13.5. Dans une moyenne, les parenthèses comptent.

Les conversions. int("14") donne le nombre 14, float("12.5") donne 12.5, str(14) donne le texte "14". Et round(x, 2) arrondit x à 2 chiffres après la virgule.

Pourquoi 0.1 + 0.2 n'affiche pas 0.3. Essaie : print(0.1 + 0.2) affiche 0.30000000000000004. L'ordinateur range les nombres à virgule en binaire, et 0,1 ne s'écrit pas exactement en binaire (comme 1/3 ne s'écrit pas exactement en décimal). L'écart est minuscule ; pour une moyenne, il suffit d'arrondir à l'affichage : round(0.1 + 0.2, 2) affiche 0.3.

Suivre les variables · une moyenne pondérée
Ce qui s'affiche

[3]Recherche

Ce que disent les sources

  • Tutoriel officiel de Python — « Les divisions (/) donnent toujours des float. » L'opérateur // effectue une division entière, % donne le reste et ** calcule une puissance. Le signe égal (=) est utilisé pour affecter une valeur à une variable ; utiliser une variable à laquelle aucune valeur n'a été affectée produit une erreur [1].
  • Tutoriel officiel de Python — La valeur décimale 0.1 ne peut pas être représentée exactement en fraction binaire ; c'est pourquoi 0.1 + 0.1 + 0.1 == 0.3 vaut False. Le tutoriel conseille d'arrondir au moment de l'affichage [2].
  • Au lycée — Les nouveaux programmes de mathématiques, publiés au Bulletin officiel du 2 avril 2026 et appliqués en seconde à la rentrée 2026, gardent une partie « Algorithmique et programmation » (variables, instructions élémentaires, notion de fonction) [3]. En spécialité NSI, les ressources officielles écrivent les algorithmes en Python [4].
  • Python aujourd'hui — La version 3.15 est sortie le 9 octobre 2026 (3.15.2 le 25 octobre) ; les versions 3.12 à 3.14 sont encore maintenues. Les exemples de ce livre fonctionnent avec Python 3.12 et plus [5].
[4]Mythes
« Il faut être fort en maths pour coder. »
il faut surtout être précis. Tu sais déjà calculer une moyenne pondérée : le programme écrit les mêmes étapes.
« Recopier un code, c'est apprendre à coder. »
recopier sans comprendre, c'est être incapable de le corriger le jour où il casse. Prédire ce qu'affiche une ligne avant de la lancer, c'est là qu'on apprend.
« L'ordinateur calcule toujours juste. »
il calcule exactement ce qu'on écrit, priorités comprises. 12 + 15 / 2 n'est pas une moyenne.
[5]Quiz

1. Qu'affiche ce programme ? note = 10, puis note = note + 4, puis print(note).

la deuxième ligne calcule 10 + 4 et range 14 dans note (sortie vérifiée).

2. Que valent 7 / 2 et 7 // 2 ?

/ donne toujours un float, // garde la partie entière (sortie vérifiée).

3. Tu veux la moyenne de 10 et 14. Quelle ligne est juste ?

sans parenthèses, la division passe avant l'addition : 10 + 14 / 2 vaut 17.0 ; (10 + 14) / 2 vaut 12.0 (sorties vérifiées).
[6]Kit

🎒 Ton kit — Épisode 1

15 min

Exercice : de la main au programme

  1. Sur papier, invente 3 notes et 3 coefficients, et calcule la moyenne pondérée à la main.
  2. Écris l'algorithme en 4 étapes, en français.
  3. Prédis ce qu'affichent ces trois programmes, puis vérifie dans la console de ton environnement (Basthon, par exemple, sans rien installer) :
  • A : a = 5, a = a + 3, b = a * 2, print(a, b)
  • B : x = 17, print(x // 5, x % 5)
  • C : note = "14", print(note + "1"), print(int(note) + 1)
  1. Recopie le programme de la moyenne pondérée avec tes notes et compare avec ton calcul à la main.

Corrigé (sorties réelles) : A affiche 8 16 ; B affiche 3 2 ; C affiche 141, puis 15. Dans C, note est du texte : + colle deux textes, alors qu'int(note) + 1 additionne deux nombres.

Code à copier : le programme de la moyenne pondérée ci-dessus.

Checklist

  • Je sais ce qu'est un algorithme et l'ai écrit pour ma moyenne.
  • Je connais les 4 types de base et l'effet de / et //.
  • J'ai prédit puis vérifié les 3 programmes.
Vigilancedes notes inventées, jamais les vraies notes d'une autre personne.
[7]Journal

✍️ Journal de bord

Quel calcul que tu fais souvent à la main (en cours, en TP, dans ton budget) pourrait devenir un programme ?

[8]Sources
  1. Python Software Foundation, Tutoriel Python — 3. Introduction informelle à Python, consulté le 29/10/2026.
  2. Python Software Foundation, Tutoriel Python — 15. Arithmétique en nombres à virgule flottante : problèmes et limites, consulté le 29/10/2026.
  3. Académie de Normandie, Nouveaux programmes de mathématiques au lycée (rentrée 2026), d'après le Bulletin officiel du 2 avril 2026, consulté le 29/10/2026.
  4. Ministère de l'Éducation nationale, Programmes et ressources en numérique et sciences informatiques — voie générale, consulté le 29/10/2026.
  5. Python Software Foundation, Active Python releases, consulté le 29/10/2026.
02
JOUR 2 · Pratiquer

Lancer ton premier script et lire l'erreur

Choisir un environnement, écrire un script qui dialogue avec l'utilisateur, et corriger une erreur en lisant le message.

⏱ 20 min de pratique · 5 min de quiz
[1]Scénario
Yanis · Mardi, 18 h

Bibliothèque universitaire. Yanis écrit un script qui demande sa note de biologie et la multiplie par son coefficient. Il lance. Message rouge :

Message d'erreur
TypeError: can't multiply sequence by non-int of type 'float'

Premier réflexe : copier le message dans un moteur de recherche et coller la première réponse venue, sans la lire. Awa l'arrête : « Lis-le d'abord. Il te dit où et pourquoi. »

[2]Méthode

Lancer, puis lire une erreur en 3 questions

1. Choisir un environnement.

  • Dans le navigateur, sans compte : Basthon. Rien à installer.
  • Au lycée : Capytale, si ton établissement l'utilise, accessible depuis l'ENT avec le code d'activité donné par ton professeur.
  • Sur ton ordinateur : Thonny, un éditeur pour débuter, à télécharger uniquement depuis son site officiel, thonny.org (si tu es mineur, avec un adulte). Les installateurs officiels incluent Python.
  • En TP : tu croiseras peut-être des notebooks Jupyter ; on y exécute le code cellule par cellule, mais tout ce que tu apprends ici s'y applique.

2. Console ou script. La console (le >>>) exécute une ligne tout de suite : parfait pour essayer. Le script est un fichier .py qu'on écrit en entier, qu'on enregistre, puis qu'on lance.

3. Afficher et demander. print("Moyenne :", moyenne) affiche plusieurs valeurs séparées par des espaces. input("Note 1 : ") affiche la question, attend la réponse… et la renvoie toujours sous forme de texte. Pour un nombre, on convertit : float(input("Note 1 : ")).

Code
print("Calcul de la moyenne de 3 notes")
note1 = float(input("Note 1 : "))
note2 = float(input("Note 2 : "))
note3 = float(input("Note 3 : "))
moyenne = (note1 + note2 + note3) / 3
print("Moyenne :", round(moyenne, 2))

Essai réel :

Ce que tu vois
Calcul de la moyenne de 3 notes Note 1 : 12 Note 2 : 15.5 Note 3 : 8 Moyenne : 11.83

4. Lire une erreur en 3 questions.

  1. Quelle ligne ? Le message donne le fichier et le numéro de ligne (line 2).
  2. Quel type d'erreur ? C'est le premier mot de la dernière ligne du message.
  3. Qu'est-ce qui ne va pas à cet endroit ? La fin de la dernière ligne l'explique ; les ^ montrent où regarder.
TypeTraductionCause fréquente
SyntaxErrorerreur de syntaxeguillemet, parenthèse ou deux-points oublié
NameErrorerreur de nomvariable mal écrite ou pas encore créée
TypeErrorerreur de typeopération entre types incompatibles (texte × nombre)
ValueErrorerreur de valeurconversion impossible, par exemple float("12,5")
IndentationErrorerreur d'indentationdécalage de début de ligne incorrect

Le message de Yanis, lu avec la méthode : ligne 2 (points = note * 1.5) ; TypeError ; can't multiply sequence by non-int of type 'float' = « impossible de multiplier une séquence par un nombre non entier ». La séquence, c'est note : du texte, car input renvoie toujours du texte. Correction : note = float(input("Note de biologie : ")).

[3]Pourquoi ça marche

L'ordinateur suit ton texte à la lettre et s'arrête à la première chose qu'il ne peut pas faire. Le message d'erreur décrit ce moment précis : où, quoi, pourquoi. Le lire d'abord évite de modifier au hasard un code qui n'avait qu'une seule faute, ou de coller une « solution » trouvée en ligne qui répond à un autre problème. Depuis Python 3.10, les messages sont plus précis et proposent parfois la correction : Did you mean: 'moyenne'? (« Voulais-tu dire : moyenne ? »).

À retenirdernière ligne d'abord (le type), puis la ligne indiquée, puis la cause.
[4]Entraînement

Bon réflexe ou piège ?

Je relance sans rien changer, au cas où.
le même code produit la même erreur.
Je lis la dernière ligne du message en premier.
c'est là que se trouvent le type d'erreur et son explication.
Je colle le message dans un moteur de recherche et je recopie la première réponse.
sans comprendre l'erreur, tu ne sais pas si la réponse correspond à ton problème, et tu ajoutes du code que tu ne comprends pas.
Je vérifie le type de ce que renvoie input.
c'est du texte, toujours ; beaucoup de TypeError viennent de là.
Je réécris tout le script.
tu perds ce qui marchait, et tu risques de refaire la même faute.
[5]Quiz

1. Tu veux essayer une seule ligne pour voir ce qu'elle fait. Où ?

la console exécute chaque ligne tout de suite.

2. Que renvoie input("Note : ") quand on tape 14 ?

input renvoie toujours du texte ; il faut convertir avec int ou float.

3. Un message d'erreur fait 4 lignes. Laquelle lire en premier ?

la dernière ligne donne le type d'erreur et son explication.
[6]Kit

🎒 Ton kit — Épisode 2

20 min

Exercice : un script qui marche, trois scripts à réparer

  1. Ouvre ton environnement (Basthon, Capytale ou Thonny).
  2. Écris et lance le script « 3 notes → moyenne » ci-dessus. Teste-le avec des notes inventées.
  3. Répare ces trois scripts. Pour chacun, note la ligne, le type d'erreur et sa traduction.

Script 1 :

Code
moyenne = 12.5
print("Moyenne : , moyenne)

Script 2 :

Code
moyenne = 12.5
print("Moyenne :", moyene)

Script 3 (avec les notes 12 et 15) :

Code
note1 = input("Note 1 : ")
note2 = input("Note 2 : ")
moyenne = (note1 + note2) / 2
print("Moyenne :", moyenne)

Corrigé (messages réels) :

  • Script 1 : SyntaxError: unterminated string literal (detected at line 2) — « chaîne de caractères non terminée » : il manque le guillemet après Moyenne : .
  • Script 2 : NameError: name 'moyene' is not defined. Did you mean: 'moyenne'? — le nom est mal écrit, et Python propose la correction.
  • Script 3 : TypeError: unsupported operand type(s) for /: 'str' and 'int' — « types non pris en charge pour / : texte et entier » : note1 + note2 a collé deux textes ("1215"), qu'on ne peut pas diviser. Correction : float(input(…)).

Code à copier : le script « 3 notes → moyenne ».

Checklist

  • J'ai lancé un script dans un environnement.
  • Je sais pourquoi input doit être converti.
  • J'ai réparé les 3 scripts en lisant les messages.
VigilancePython et Thonny se téléchargent seulement depuis leur site officiel (python.org, thonny.org), jamais depuis un site de téléchargement tiers.
[7]Journal

✍️ Journal de bord

Quelle erreur t'a le plus résisté aujourd'hui ? Qu'est-ce qui, dans le message, t'a permis de la comprendre ?

[8]Sources
  1. Python Software Foundation, Tutoriel Python — 8. Erreurs et exceptions, consulté le 29/10/2026.
  2. Python Software Foundation, Les nouveautés de Python 3.10 — Meilleurs messages d'erreurs, consulté le 29/10/2026.
  3. Python Software Foundation, Fonctions natives — input(), consulté le 29/10/2026.
  4. Pyodide, Related projects (Basthon : fork de Jupyter avec un noyau Pyodide, qui s'exécute dans le navigateur, interface en français), consulté le 29/10/2026.
  5. Thonny, site officiel (version 5.0.1, installateurs avec Python 3.14), consulté le 29/10/2026. (thonny.org)
  6. Éduscol, ressources Capytale (plateforme du cycle 3 aux classes préparatoires, accès par l'ENT), consulté le 29/10/2026. (eduscol.education.gouv.fr)
03
JOUR 3 · Comprendre

Décider et répéter

Faire prendre une décision au programme avec if / elif / else, et lui faire répéter des instructions avec for et while.

⏱ 20 min de lecture · 5 min de quiz
[1]Scénario
Yanis · Mercredi, 14 h

Yanis veut que son script affiche la mention, et qu'il marche pour n'importe quel nombre de matières. Pour l'instant, il a recopié six fois le même bloc de saisie, et son script accepte une note de 25 sur 20 sans broncher. Awa : « Six fois le même bloc ? Il y a une instruction pour ça. Et une autre pour refuser les notes impossibles. »

[2]Concept

Les conditions et les boucles

Comparer. Une comparaison donne True ou False : == (égal), != (différent), <, <=, >, >=. On les combine avec and (et), or (ou), not (non) : avec note = 15, note >= 0 and note <= 20 vaut True, note < 0 or note > 20 vaut False.

Décider : if / elif / else.

Code
moyenne = 13.08
if moyenne >= 16:
    print("Mention très bien")
elif moyenne >= 14:
    print("Mention bien")
elif moyenne >= 12:
    print("Mention assez bien")
else:
    print("Pas de mention")

Affiche Mention assez bien. Les conditions sont testées dans l'ordre ; la première vraie s'exécute, les autres sont ignorées. elif veut dire « sinon, si » ; else (« sinon ») est facultatif. Chaque ligne de test finit par deux-points :, et ce qui en dépend est décalé de 4 espaces.

Le piège de l'ordre. Le même programme avec les tests dans l'autre sens :

Code
moyenne = 17
if moyenne >= 12:
    print("Mention assez bien")
elif moyenne >= 14:
    print("Mention bien")
elif moyenne >= 16:
    print("Mention très bien")
else:
    print("Pas de mention")

Affiche Mention assez bien pour 17 ! Le premier test (17 >= 12) est vrai : Python s'arrête là. On teste donc du seuil le plus haut au plus bas.

Répéter un nombre connu de fois : for.

Code
total = 0
for i in range(3):
    note = float(input("Note : "))
    total = total + note
    print("Tour", i, "- total provisoire :", total)
print("Total :", total)

Essai réel :

Ce que tu vois
Note : 12 Tour 0 - total provisoire : 12.0 Note : 15.5 Tour 1 - total provisoire : 27.5 Note : 8 Tour 2 - total provisoire : 35.5 Total : 35.5

range(3) donne 0, 1, 2 : trois valeurs, en commençant à 0, sans jamais atteindre 3. range(2, 5) donne 2, 3, 4. La variable total, créée avant la boucle et augmentée à chaque tour, est un accumulateur.

Répéter tant qu'une condition est vraie : while.

Code
note = float(input("Note sur 20 : "))
while note < 0 or note > 20:
    print("Une note est comprise entre 0 et 20.")
    note = float(input("Note sur 20 : "))
print("Note enregistrée :", note)

Essai réel :

Ce que tu vois
Note sur 20 : 25 Une note est comprise entre 0 et 20. Note sur 20 : -3 Une note est comprise entre 0 et 20. Note sur 20 : 14 Note enregistrée : 14.0

Tant que la note est impossible, on la redemande. Attention : si rien ne change dans la boucle, la condition reste vraie pour toujours. C'est une boucle infinie : arrête le programme avec le bouton Stop (ou Ctrl+C).

Ton besoinLa boucle
répéter un nombre de fois connu à l'avance (3 matières)for i in range(3):
répéter tant qu'une condition est vraie (note invalide)while condition:

Les mentions. Au baccalauréat, la mention assez bien correspond à une moyenne d'au moins 12 (et moins de 14), bien à au moins 14 (et moins de 16), très bien à au moins 16 ; la mention « très bien avec les félicitations du jury » s'ajoute à partir de 18. En licence, c'est le règlement des examens de ton université qui fixe les règles : vérifie-le avant de les programmer.

Machine à conditions · le programme des mentions
Ce qui s'affiche

[3]Recherche

Ce que disent les sources

  • Tutoriel officiel de Python — Le mot clé elif est un raccourci pour else if ; il peut y avoir un nombre quelconque de parties elif, et la partie else est facultative [1].
  • Tutoriel officiel de Python — L'instruction for parcourt les éléments d'une séquence dans l'ordre. Avec range, le dernier élément fourni en paramètre ne fait jamais partie des valeurs générées : range(10) génère 10 valeurs, de 0 à 9 [1].
  • Ministère de l'Éducation nationale — Au baccalauréat, mention assez bien pour une note moyenne au moins égale à 12 et inférieure à 14, bien au moins égale à 14 et inférieure à 16, très bien au moins égale à 16 [2]. Depuis la réforme de 2018, une mention « très bien avec les félicitations du jury » est ajoutée lorsque la moyenne est au moins égale à 18 [3].
[4]Mythes
« L'ordre des elif n'a pas d'importance. »
Python s'arrête au premier test vrai. Mal rangés, les tests donnent « assez bien » à un 17.
« range(5) va de 1 à 5. »
il va de 0 à 4 : cinq valeurs, en commençant à 0.
« Une boucle while finit toujours par s'arrêter. »
seulement si quelque chose, dans la boucle, finit par rendre la condition fausse.
[5]Quiz

1. Dans le programme des mentions (tests de 16 à 12, du plus haut au plus bas), qu'affiche une moyenne de 14 ?

14 >= 16 est faux, 14 >= 14 est vrai : la deuxième branche s'exécute (sortie vérifiée).

2. Quelles valeurs prend i dans for i in range(3): ?

trois valeurs, en commençant à 0 (sortie vérifiée).

3. Avec n = 1, combien de tours fait while n < 20: si chaque tour fait n = n * 3 ?

n vaut 3, puis 9, puis 27 ; 27 n'est plus plus petit que 20 : trois tours (sortie vérifiée : 27 3).
[6]Kit

🎒 Ton kit — Épisode 3

20 min

Exercice : prédire puis vérifier Pour chaque programme, écris sur papier ce qu'il affiche (et le nombre de tours), puis lance-le.

Programme A :

Code
moyenne = 14
if moyenne >= 16:
    print("très bien")
elif moyenne >= 14:
    print("bien")
else:
    print("autre")

Programme B :

Code
heures = 3
if heures > 4 or heures < 1:
    print("Repose-toi")
else:
    print("Au travail")

Programme C :

Code
for i in range(2, 5):
    print(i)

Programme D :

Code
n = 1
tours = 0
while n < 20:
    n = n * 3
    tours = tours + 1
print(n, tours)

Corrigé (sorties réelles) : A affiche bien ; B affiche Au travail ; C affiche 2, 3, 4 ; D affiche 27 3.

Code à copier : la saisie contrôlée d'une note avec while (ci-dessus).

Checklist

  • Je range mes tests if / elif du seuil le plus haut au plus bas.
  • Je sais quelles valeurs donne range.
  • Je sais choisir entre for et while.
Vigilancesi un programme ne s'arrête plus, utilise le bouton Stop de ton environnement (ou Ctrl+C) : ce n'est pas grave, ton ordinateur ne risque rien.
[7]Journal

✍️ Journal de bord

Dans tes cours ou tes TP, quelle tâche répètes-tu à la main qu'une boucle pourrait faire ?

[8]Sources
  1. Python Software Foundation, Tutoriel Python — 4. D'autres outils de contrôle de flux, consulté le 29/10/2026.
  2. Ministère de l'Éducation nationale, Le baccalauréat — mentions, consulté le 29/10/2026.
  3. Décret n° 2018-614 du 16 juillet 2018 relatif aux baccalauréats général et technologique, article D. 334-11 du code de l'éducation (mention « très bien avec les félicitations du jury »), version consolidée publiée par le SNES, consulté le 29/10/2026. (snes.edu)
04
JOUR 4 · Pratiquer

Construire ton calculateur pas à pas

Une étape, un test, un cas calculé à la main : construire un programme sans se perdre.

⏱ 20 min de pratique · 5 min de quiz
[1]Scénario
Yanis · Jeudi, 10 h

TP noté la semaine prochaine. Yanis veut écrire son calculateur d'un seul coup, comme quand il recopiait. Il tape 15 lignes, lance… et obtient une moyenne de 26,17 sur 20. Awa secoue la tête : « Une étape, un test. Et un cas que tu as déjà calculé à la main : tu sauras tout de suite si c'est juste. »

[2]Méthode

« Une étape, un test, un cas connu »

Rappels : conversions et priorités (voir épisode 1), lecture d'erreur (voir épisode 2), for et accumulateurs (voir épisode 3).

  1. Le cas de référence : calcule une moyenne à la main. Ici : 12 (coef 2), 15,5 (coef 3), 8 (coef 1) → (24 + 46,5 + 8) / 6 = 78,5 / 6 ≈ 13,08.
  2. Une étape : demander le nombre de matières, puis la boucle de saisie, puis le calcul, puis l'affichage.
  3. Un test après chaque étape, avec le cas de référence.
  4. On compare l'obtenu et l'attendu. Seulement si c'est juste, on passe à l'étape suivante.

Le calculateur :

Code
nb_matieres = int(input("Nombre de matières : "))
total = 0
somme_coefs = 0
for i in range(nb_matieres):
    print("Matière", i + 1)
    note = float(input("  Note sur 20 : "))
    coef = float(input("  Coefficient : "))
    total = total + note * coef
    somme_coefs = somme_coefs + coef
moyenne = total / somme_coefs
print("Moyenne :", round(moyenne, 2))

Essai réel avec le cas de référence :

Ce que tu vois
Nombre de matières : 3 Matière 1 Note sur 20 : 12 Coefficient : 2 Matière 2 Note sur 20 : 15.5 Coefficient : 3 Matière 3 Note sur 20 : 8 Coefficient : 1 Moyenne : 13.08

Obtenu = attendu. Le cas de référence a aussi démasqué les deux bugs de Yanis (sorties réelles) :

  • total = 0 placé dans la boucle : le total repart de zéro à chaque matière → Moyenne : 1.33 ;
  • division par nb_matieres au lieu de somme_coefs → Moyenne : 26.17 (une moyenne sur 20 ne dépasse jamais 20 : c'est un signal d'alarme).
Remets les lignes dans l'ordre · clique les lignes une par une
Ton programme
Lignes à placer
[3]Pourquoi ça marche

Quand on ajoute une seule étape à la fois, une erreur apparaît juste après l'étape qui l'a introduite : on sait où chercher. Et le cas calculé à la main transforme « ça a l'air de marcher » en « c'est juste » : un résultat plausible peut être faux, comme 13,5 au lieu de 13,08. C'est la même démarche qu'en TP de sciences : on vérifie un protocole sur un échantillon dont on connaît la réponse avant de l'appliquer au reste.

À retenirun cas connu, une étape, un test ; on compare l'obtenu et l'attendu.
[4]Entraînement

Bon réflexe ou piège ?

Je teste avec un cas que j'ai calculé à la main.
sans résultat attendu, impossible de savoir si le résultat obtenu est juste.
J'écris tout le calculateur, puis je teste une seule fois.
plusieurs erreurs se mélangent, et on ne sait plus laquelle vient d'où.
Je mets total = 0 dans la boucle, pour être sûr qu'il démarre à zéro.
il est remis à zéro à chaque tour ; il faut l'initialiser une seule fois, avant la boucle.
Je divise par le nombre de matières.
une moyenne pondérée se divise par la somme des coefficients.
Je teste aussi une note invalide, comme 25.
un programme doit résister à ce que tapera vraiment l'utilisateur.
[5]Quiz

1. Où initialiser total = 0 ?

dans la boucle, il serait remis à zéro à chaque matière (sortie vérifiée : 1.33 au lieu de 13.08).

2. Par quoi divise-t-on pour une moyenne pondérée ?

chaque note compte autant de fois que son coefficient.

3. À quoi sert le cas de référence ?

sans résultat attendu, un résultat faux mais plausible passe inaperçu.
[6]Kit

🎒 Ton kit — Épisode 4

20 min

Exercice : ton calculateur en 4 étapes

  1. Invente ton cas de référence (3 matières, notes et coefficients) et calcule la moyenne à la main.
  2. Étape 1 : demander le nombre de matières et l'afficher. Teste.
  3. Étape 2 : la boucle qui demande note et coefficient. Teste.
  4. Étape 3 : l'accumulation et la division. Teste avec ton cas de référence.
  5. Étape 4 : l'affichage arrondi. Teste. Puis tape une note de 25 : que se passe-t-il ? (Tu le corrigeras demain.)

Code à copier : le calculateur ci-dessus.

Checklist

  • J'ai un cas de référence calculé à la main.
  • J'ai testé après chaque étape.
  • Mon calculateur donne le résultat attendu.
Vigilancepour un TP noté, respecte les règles de ton établissement sur l'aide extérieure et le code partagé ; ce que tu rends doit être ce que tu sais expliquer.
[7]Journal

✍️ Journal de bord

À quelle étape ton calculateur a-t-il donné un résultat faux, et comment l'as-tu vu ?

[8]Sources
  1. Python Software Foundation, Tutoriel Python — 4. D'autres outils de contrôle de flux, consulté le 29/10/2026.
  2. Sorties du calculateur et de ses deux versions boguées : exécutions réelles sous Python 3.12.13 et 3.15.0 (journal de test de ce livre), le 29/10/2026.
05
JOUR 5 · Pratiquer · Final

Ton calculateur de moyennes et ton certificat

Terminer un script utile, le tester comme un vrai utilisateur, puis rassembler tes outils.

⏱ 20 min · boîte à outils · carrousel · certificat
[1]Scénario
Yanis · Vendredi, 17 h

Yanis envoie son calculateur à Awa. Elle tape 4 matières, une note de 21 (refusée : bien), un coefficient de 0 (refusé aussi), puis « 12,5 » avec une virgule… et le script s'arrête sur un message rouge. Yanis ne panique pas : il lit la dernière ligne, ValueError: could not convert string to float: '12,5', « impossible de convertir le texte '12,5' en nombre à virgule ». Python attend un point. Il l'écrit dans la question posée à l'utilisateur : « avec un point ». Lundi, il recopiait sans comprendre ; aujourd'hui, il sait pourquoi son programme s'arrête.

[2]Outil

Mon carnet de code

Consigne : termine ton calculateur (saisie contrôlée de chaque note et de chaque coefficient, moyenne pondérée arrondie à 2 chiffres, mention), puis teste-le sur 3 cas : ton cas de référence, une note invalide, une moyenne pile sur un seuil (par exemple 14). Range ensuite tes outils de la semaine dans ton carnet.

Le calculateur complet (code à copier) :

Code
print("=== Calculateur de moyennes ===")
nb_matieres = int(input("Nombre de matières : "))
total = 0
somme_coefs = 0
for i in range(nb_matieres):
    print("Matière", i + 1)
    note = float(input("  Note sur 20 (avec un point) : "))
    while note < 0 or note > 20:
        print("  Une note est comprise entre 0 et 20.")
        note = float(input("  Note sur 20 (avec un point) : "))
    coef = float(input("  Coefficient : "))
    while coef <= 0:
        print("  Un coefficient est un nombre positif.")
        coef = float(input("  Coefficient : "))
    total = total + note * coef
    somme_coefs = somme_coefs + coef
moyenne = round(total / somme_coefs, 2)
print("Moyenne :", moyenne, "sur 20")
if moyenne >= 16:
    print("Mention très bien")
elif moyenne >= 14:
    print("Mention bien")
elif moyenne >= 12:
    print("Mention assez bien")
else:
    print("Pas de mention")

On arrondit avant de décider : la moyenne affichée et la mention sont toujours d'accord. Avec 16 et 15,99 (coefficients 1), le calculateur affiche Moyenne : 16.0 sur 20 et Mention très bien.

Essais réels :

Ce que tu vois
=== Calculateur de moyennes === Nombre de matières : 3 Matière 1 Note sur 20 (avec un point) : 12 Coefficient : 2 Matière 2 Note sur 20 (avec un point) : 15.5 Coefficient : 3 Matière 3 Note sur 20 (avec un point) : 8 Coefficient : 1 Moyenne : 13.08 sur 20 Mention assez bien

Avec 2 matières notées 14 (coefficient 1) : Moyenne : 14.0 sur 20, puis Mention bien — pile sur le seuil, la bonne mention.

Boîte à outils interactive · Enregistrée dans ce navigateur
[3]Carrousel final

🎨 Carrousel final — Boost

[4]Journal

✍️ Journal de bord — mot de la fin

Qu'est-ce que tu sais faire aujourd'hui que tu recopiais sans comprendre lundi ?

✦ PYTHONISTE · LES 5 JOURS ✦

Bravo ! Tu as terminé les 5 jours du Boost. Tu sais écrire, lancer et réparer un script Python, et tu as construit un calculateur utile pour tes cours.

[5]Certificat

🎓 Ton certificat

Le certificat s'affiche lorsque les 5 épisodes sont marqués comme terminés.

COLLECTION « CHALLENGES » · APPRENDRE À CODER EN PYTHON

Certificat de réussite

Ce certificat atteste que

—

a terminé les épisodes du Boost — Python sans paniquer et atteint le niveau Pythoniste.

Ce que ce parcours couvre : algorithme et programme, environnements, console et script, variables et types, opérateurs et conversions, conditions, boucles for et while, lecture des messages d'erreur, construction pas à pas d'un script testé.

[6]Sources
  1. Python Software Foundation, Tutoriel Python — 8. Erreurs et exceptions, consulté le 29/10/2026.
  2. Sorties du calculateur : exécutions réelles sous Python 3.12.13 et 3.15.0 (journal de test de ce livre), le 29/10/2026.