Errors & testing · Erreurs & tests
Three kinds of error
- A syntax error breaks the rules of Python, so the code will not run.
- A runtime error crashes the program while it is running.
- A logic error runs fine but gives the wrong answer.
Trois sortes d'erreurs
- Une erreur de syntaxe viole les règles de Python, donc le code ne s'exécutera pas.
- Une erreur d'exécution plante le programme pendant qu'il tourne.
- Une erreur logique s'exécute correctement mais donne la mauvaise réponse.
Syntax errors
- These are typos: a missing
:, an unclosed quote, a wrong indent. - Python refuses to start and shows you the line.
- Fix the spelling or punctuation, then run again.
Erreurs de syntaxe
- Ce sont des fautes de frappe : une parenthèse manquante
:, une guillemet non fermé, une indentation incorrecte. - Python refuse de commencer et vous montre la ligne.
- Corrigez l'orthographe ou la ponctuation, puis relancez.
Runtime errors
- The code starts, then hits something it cannot do.
- Examples:
10 / 0, orint("hello"), or reading past the end of a list. - The program stops at that line with a message.
Erreurs d'exécution
- Le code commence, puis rencontre quelque chose qu'il ne peut pas faire.
- Exemples :
10 / 0, ouint("hello"), ou lire au-delà de la fin d'une liste. - Le programme s'arrête à cette ligne avec un message.
Logic errors
- The program runs to the end but the result is wrong.
- Example: using
-where you meant+, or stopping a loop too early. - These are the hardest to find — the computer did exactly what you wrote.
Erreurs logiques
- Le programme s'exécute jusqu'au bout mais le résultat est faux.
- Exemple : utiliser
-là où vous vouliez+, ou arrêter une boucle trop tôt. - Ce sont les plus difficiles à trouver — l'ordinateur a fait exactement ce que vous avez écrit.
Read the traceback
- When a program crashes, Python prints a traceback.
- Read the last line first: it names the error and what went wrong.
- The line number tells you where to look.
Lire la trace d'erreur
- Quand un programme plante, Python imprime une traceback (liste de traceback).
- Lisez la dernière ligne en premier : elle nomme l'erreur et ce qui a mal tourné.
- Le numéro de ligne vous dit où regarder.
Traceback (most recent call last):
File "<program>", line 2, in <module>
print(10 / 0)
ZeroDivisionError: division by zero
Test with chosen data
- Do not trust code until you have tested it.
- Use normal data, boundary data (like
0), and extreme data. - Check each answer against what you worked out by hand.
Tester avec des données choisies
- Ne faites pas confiance au code tant que vous ne l'avez pas testé.
- Utilisez des données normales, des données frontières (comme
0), et des données extrêmes. - Vérifiez chaque réponse contre ce que vous avez calculé à la main.
def square(n):
return n * n
print(square(3)) # normal -> 9
print(square(0)) # boundary -> 0
print(square(-2)) # negative -> 4
Common mistakes
- A syntax error stops the program before it runs, so fix those first.
- Catch a specific error with
except ValueError:, not a bareexcept:. - Test the tricky cases (empty, zero, the biggest), not just the easy one.
Erreurs courantes
- Une erreur de syntaxe empêche le programme de démarrer, donc corrigez celles-là d'abord.
- Attrapez une erreur spécifique avec
except ValueError:, pas unexcept:nu. - Testez les cas délicats (vide, zéro, le plus grand), pas juste le cas facile.
Now you try
- Each task has a logic error to fix, or a crash to prevent.
- Press Check answer to test your fix against several cases.
À vous maintenant
- Chaque tâche contient une erreur logique à corriger, ou un crash à prévenir.
- Appuyez sur Vérifier la réponse pour tester votre correction contre plusieurs cas.
Find and fix a bug · Trouver et corriger un bug
Testing is a cycle: run it, see what's wrong, fix, run again. · Le test est un cycle : exécutez-le, voyez ce qui cloche, corrigez, exécutez à nouveau.
This function should add · ajouter a and · et b, but it has a logic error — it subtracts. Fix it so it returns the sum. · Cette fonction devrait additionner a et b, mais elle contient une erreur logique — elle soustrait. Corrigez-la pour qu'elle retourne la somme.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.
sum_to(n) should return 1 + 2 + ... + n, but it stops one number too early (an off-by-one logic error). Fix the range so it includes n. · sum_to(n) devrait retourner 1 + 2 + ... + n, mais il s'arrête un nombre trop tôt (erreur logique hors limite). Corrigez le range pour qu'il inclue n.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.
Write safe_divide(a, b) that returns a / b, but prevents a runtime crash: if b is 0, return 0 instead. · Écrivez safe_divide(a, b) qui retourne a / b, mais empêche un crash d'exécution : si b est 0, retournez 0 à la place.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.
average(nums) has two bugs: it divides by the wrong number, and it crashes on an empty list. Fix both, so average([2, 4, 6]) is 4 and · et average([]) is 0. · average(nums) a deux bugs : il divise par le mauvais nombre, et il crash sur une liste vide. Corrigez les deux, afin que average([2, 4, 6]) soit 4 et average([]) soit 0.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.