Le voyant du tableau de bord
Quand un voyant s'allume dans la voiture, il indique où regarder. Un message d'erreur Python fait la même chose : il donne le type d'erreur et le numéro de ligne. On le lit en partant du bas.
Lire un message d'erreur, distinguer les erreurs de syntaxe, d'exécution et de logique, et protéger un programme avec try / except.
Un collègue vous envoie un programme de calcul de moyenne qui « ne marche pas ». Il plante quand on saisit une lettre, et donne parfois une moyenne fausse. Avant de tout réécrire, il faut comprendre ce que dit Python et trouver les erreurs une par une.
Le programme s'arrête et Python affiche un message d'erreur (traceback). Pas de panique : il dit où et pourquoi.
Déboguer, c’est trouver et corriger les erreurs d’un programme. Il en existe trois familles.
| Famille | Quand | Exemple | Message |
|---|---|---|---|
| Syntaxe | avant l’exécution | deux-points oublié après if | SyntaxError |
| Exécution | pendant l’exécution | diviser par zéro, "5" + 1 | ZeroDivisionError, TypeError |
| Logique | jamais signalée | < au lieu de <= | aucun : le résultat est faux |
Lisez le message de bas en haut : la dernière ligne donne le type d’erreur et sa cause, la ligne line N indique où le problème a été détecté.
Traceback (most recent call last):
File "<exec>", line 4, in moyenne
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Ici, à la ligne 4, on additionne un entier et un texte : une note n’a pas été convertie.
print() pour voir les valeurs intermédiaires.Certaines erreurs viennent de l’utilisateur. On les traite avec try / except au lieu de laisser le programme planter :
try:
note = float(input("Note : "))
except ValueError:
print("Veuillez saisir un nombre.")
Quand un voyant s'allume dans la voiture, il indique où regarder. Un message d'erreur Python fait la même chose : il donne le type d'erreur et le numéro de ligne. On le lit en partant du bas.
input renvoie du texte. « 5 » + 3 n'a pas de sens pour Python, d'où une TypeError. La correction : convertir avec int.
age = input("Âge : ") print(age + 1) # TypeError print(int(age) + 1) # correct
Donnez les deux corrections à apporter au programme de la simulation et le type de chaque erreur.
La première erreur arrête le programme. La seconde ne fait rien planter mais donne un résultat faux.
# Erreur d'exécution (TypeError) : input() renvoie du texte notes.append(float(texte)) # Erreur de logique : le « - 1 » fausse le résultat return total / len(notes)
Modifiez la saisie pour que le programme redemande la note tant que l'utilisateur tape autre chose qu'un nombre.
def lire_note(): while True: texte = input("Note : ") try: return float(texte) except ValueError: print("Ce n'est pas un nombre, recommencez.")