Le total qui ne tombe pas juste
Tu additionnes tes courses : 4 euros, 6 euros, 5 euros. Le programme répond 4.
Aucun message rouge. Aucune erreur. Le programme tourne tranquillement, et il se trompe.
C'est le pire cas : personne ne te dit où chercher. Dans cette leçon, tu apprends à mener l'enquête.
Mots-clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Bogue | Un défaut dans un programme. Il peut donner une erreur ou une réponse fausse. | Un total de 4 au lieu de 15 |
| Reproduire | Retrouver à coup sûr le bogue, avec les mêmes valeurs. | somme([4, 6, 5]) |
| Hypothèse | Une idée sur la cause du bogue, qu'on va vérifier. | La boucle s'arrête trop tôt |
| Print de contrôle | Un print qu'on ajoute pour voir ce que vaut une variable. | print("total =", total) |
| Pas à pas | Suivre le programme une ligne après l'autre, comme le ferait Python. | Un tableau de suivi |
| Jeu d'essai | Des valeurs choisies pour tester, avec la réponse qu'on attend. | [4, 6, 5] doit rendre 15 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Une méthode en cinq temps
Un bon détective ne devine pas au hasard. Il suit cinq temps.
Un : reproduire le bogue. Deux : se demander ce que le programme devrait donner. Trois : faire une hypothèse. Quatre : la vérifier avec un print de contrôle. Cinq : corriger, puis relancer.
À toi : le total de 4
def somme(prix):
total = 0
for p in prix:
total = total + p
return total
print(somme([4, 6, 5]))
# Le résultat devrait être 15. Il est faux, et Python ne dit rien.
# Ajoute print("p =", p, "total =", total) dans la boucle. Combien de tours vois-tu ?
Exemple travaillé : somme avec le bogue
| Tour | p | total après l'addition | Ce qui se passe |
|---|---|---|---|
| 1 | 4 | 4 | return rend 4 et la fonction s'arrête |
| 2 | - | - | Ce tour n'a jamais lieu |
| 3 | - | - | Ce tour n'a jamais lieu |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Exemple travaillé : la même fonction corrigée
| Tour | p | total après l'addition | Ce qui se passe |
|---|---|---|---|
| 1 | 4 | 4 | la boucle continue |
| 2 | 6 | 10 | la boucle continue |
| 3 | 5 | 15 | la boucle est finie |
| Après | - | 15 | return rend 15 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
À toi : un print de contrôle
def somme(prix):
total = 0
for p in prix:
total = total + p
print("p =", p, "total =", total)
return total
print(somme([4, 6, 5]))
# Maintenant return est après la boucle. Vois-tu trois tours ?
# Efface les print de contrôle quand tu as fini.
Contrôle rapide
À toi de jouer
Contrôle rapide
3 questionsTes réponses sont corrigées ici et ne sont pas conservées. Un compte garde tes résultats.
Le bogue du premier élément
Un autre bogue très courant : la boucle commence trop tard. Avec range(1, len(liste)), l'indice 0 est sauté.
On ne voit rien : pas de message, juste un compte trop petit. Un print de l'indice montre tout de suite le trou.