ParcoursOuvrir l'appli

Lire les erreurs et réparer du code

Python, les bases · 45 min

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

Sur l'indentation

La méthode pour déboguer

Quand ton programme ne fait pas ce que tu veux :

  1. Lis le message d'erreur en entier, de bas en haut. 80 % du temps, la réponse est dedans.
  2. Regarde la ligne indiquée, et celle du dessus.
  3. Vérifie les valeurs : ajoute des print pour voir ce que contiennent tes variables à chaque étape. C'est la technique la plus utilisée au monde, même par les pros.
  4. 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.
  5. 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 :

  1. sous_total : prix × quantité ;
  2. remise : 10 % du sous-total (10 % = multiplier par 0.10) ;
  3. apres_remise : sous-total moins la remise ;
  4. tva : 19,25 % du montant après remise (attention : en Python on écrit 0.1925) ;
  5. 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 ?
  1. Une division par zéro
  2. Une faute de frappe : la variable s'appelle sûrement prix (bonne réponse)
  3. Il manque une parenthèse
  4. 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 ?
  1. Tout va bien
  2. C'est une erreur silencieuse : la formule est fausse (bonne réponse)
  3. Python s'est trompé
  4. 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.