Lire les erreurs et réparer du code
Une erreur n'est pas un échec
Les erreurs font partie du travail normal, même pour les experts qui codent depuis 20 ans. La différence entre un débutant et un expert, ce n'est pas le nombre d'erreurs : c'est la vitesse à laquelle il les lit et les corrige.
Bonne nouvelle : Python te dit précisément ce qui ne va pas. Exemple, sur un vrai PC, avec un fichier essai.py qui contient print("a" + 5) à la ligne 3 :
Traceback (most recent call last):
File "/home/oriol/essai.py", line 3, in <module>
print("a" + 5)
~~~~^~~
TypeError: can only concatenate str (not "int") to str
Dans l'appli, la ligne fautive est aussi surlignée en rouge dans l'éditeur, avec une explication en français.
Les erreurs que tu croiseras le plus
| Erreur | Signifie | Cause typique |
|---|---|---|
NameError |
nom inconnu | faute de frappe, variable pas encore créée, guillemets oubliés |
TypeError |
opération impossible entre ces types | "5" + 5 |
ValueError |
bon type, mauvaise valeur | int("bonjour") |
ZeroDivisionError |
division par zéro | 10 / 0 |
SyntaxError |
Python ne comprend pas la phrase | parenthèse ou guillemet non fermé |
IndentationError |
espaces en trop en début de ligne | une ligne décalée sans raison |
Deux pièges de SyntaxError
- Python signale parfois l'erreur une ligne trop bas. Si une parenthèse n'est pas fermée à la ligne 4, il peut s'en apercevoir à la ligne 5. Regarde donc aussi la ligne au-dessus.
- Une
SyntaxErrorempêche tout le programme de démarrer, même les lignes correctes au-dessus. Les autres erreurs, elles, arrivent pendant l'exécution : les lignes d'avant ont déjà tourné.
Sur l'indentation
La méthode pour déboguer
Quand ton programme ne fait pas ce que tu veux :
- Lis le message d'erreur en entier, de bas en haut. 80 % du temps, la réponse est dedans.
- Regarde la ligne indiquée, et celle du dessus.
- Vérifie les valeurs : ajoute des
printpour voir ce que contiennent tes variables à chaque étape. C'est la technique la plus utilisée au monde, même par les pros. - Fais une hypothèse, teste-la, recommence. Ne change pas dix choses à la fois : tu ne saurais pas laquelle a réglé le problème.
- Si tu bloques, explique ton code à voix haute, ligne par ligne.
Les erreurs silencieuses
Les erreurs les plus dangereuses ne produisent aucun message : le programme tourne, mais le résultat est faux. Une priorité oubliée, une mauvaise formule, une mauvaise unité. Python ne peut pas les détecter, car pour lui tout est correct.
Exercice : Répare 1 : le nom
Ce programme plante. Clique d'abord sur Vérifier pour lire l'erreur, trouve la cause, puis corrige-la.
Voir une solution
quantite = 4
prix = 250
total = prix * quantite
print(total)Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Exercice : Répare 2 : la parenthèse
Celui-ci ne démarre même pas. Lis l'erreur : sur quelle ligne Python s'en aperçoit-il, et où est vraiment le problème ?
Voir une solution
prix = 500
print(prix * 2)
print("fin")Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Exercice : Répare 3 : le type
L'âge vient d'un formulaire. Corrige pour que le programme affiche L'an prochain, tu auras 21 ans.
Voir une solution
age = "20"
age_prochain = int(age) + 1
print(f"L'an prochain, tu auras {age_prochain} ans")Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Exercice : Répare 4 : l'ordre
Remets les lignes dans le bon ordre pour que le programme marche. Tu peux couper (Ctrl + X) et coller (Ctrl + V) des lignes.
Voir une solution
budget = 5000
depense = 3500
reste = budget - depense
print(f"Il reste {reste} FCFA")Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Exercice : Répare 5 : la valeur
Ce programme lit un poids saisi par un client, mais il plante. Lis l'erreur : quel est le type d'erreur, et pourquoi ?
Corrige la donnée pour que le calcul marche : le client voulait dire 2,5 kg.
Voir une solution
poids_texte = "2,5"
poids = float(poids_texte.replace(",", "."))
prix = poids * 1200
print(prix)Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Exercice : Répare 6 : l'erreur silencieuse
Ce programme ne plante pas, mais le résultat est faux : la moyenne de 10, 14 et 18 devrait être 14. Ce sont les erreurs les plus dangereuses.
Trouve et corrige l'erreur.
Voir une solution
a = 10
b = 14
c = 18
moyenne = (a + b + c) / 3
print(moyenne)Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Exercice : Déboguer avec `print`
Ce programme calcule le prix d'un taxi : un forfait de départ, plus un prix par kilomètre. Pour 8 km, le prix devrait être 3500 FCFA, mais il affiche autre chose.
Ajoute des print pour voir la valeur de chaque variable, trouve la ligne qui est fausse, et corrige-la.
Voir une solution
forfait = 500
prix_km = 375
distance_km = 8
cout_distance = prix_km * distance_km
total = forfait + cout_distance
print(total)Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Exercice : Projet : la facture complète
Tu combines tout ce que tu as appris. Une cliente achète quantite articles à prix_unitaire FCFA. Elle a droit à une remise de 10 %, puis on ajoute la TVA de 19,25 % (le taux au Cameroun).
Crée les variables :
sous_total: prix × quantité ;remise: 10 % du sous-total (10 % = multiplier par0.10) ;apres_remise: sous-total moins la remise ;tva: 19,25 % du montant après remise (attention : en Python on écrit0.1925) ;total: montant après remise plus la TVA.
Puis affiche Total à payer : 9659.25 FCFA (2 chiffres après la virgule).
Voir une solution
prix_unitaire = 4500 # donné
quantite = 2 # donné
sous_total = prix_unitaire * quantite
remise = sous_total * 0.10
apres_remise = sous_total - remise
tva = apres_remise * 0.1925
total = apres_remise + tva
print(f"Total à payer : {total:.2f} FCFA")Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Teste-toi
Le message se termine par NameError: name 'prixx' is not defined. Quelle est la cause la plus probable ?
- Une division par zéro
- Une faute de frappe : la variable s'appelle sûrement
prix(bonne réponse) - Il manque une parenthèse
- Le nombre est trop grand
Compare lettre par lettre le nom dans l'erreur et le nom que tu as créé.
Le programme affiche une moyenne de 34 pour des notes de 10, 14 et 18. Aucun message d'erreur. Que se passe-t-il ?
- Tout va bien
- C'est une erreur silencieuse : la formule est fausse (bonne réponse)
- Python s'est trompé
- Il faut relancer
La moyenne de 10, 14 et 18 est 14. Le résultat est faux sans aucun message : une priorité oubliée, probablement a + b + c / 3.