
Une fois que vous avez écrit votre programme, il y aura certainement des erreurs. Suivant le type d’erreur, vous aurez différentes actions à mettre en œuvre. En effet, Python vous donnera le type d’erreur et également la ligne à laquelle l’erreur s’est produite. Les types d’erreur sont les suivants :
- Les erreurs de syntaxe : les environnements de développement comme Spyder ou PyCharm vous indique ce type d’erreur avant même d’avoir exécuter votre code. Ce sont généralement des oublis, des fautes de frappes ou l’omission d’un caractère comme les deux points (:), parenthèses, … Si vous exécutez votre programme, Python vous renverra le message suivant : SyntaxError
- Les erreurs d’exécution : ces erreurs surviennent lorsque vous exécutez le code. Le message d’erreur renvoyé vous donnera plus d’information sur le type d’erreur. Par exemple si vous faites une opération mathématique avec une chaîne de caractères, vous aurez alors une erreur de type : TypeError.
- Les erreurs de sémantique : Vous n’aurez pas de message d’erreur car le code s’exécute bien. Le problème vient de la façon de programmer. L’ordre d’exécution de votre code est peut-être erroné et provoque un comportement inattendu ce qui fait que le résultat renvoyé n’est pas celui attendu. Dans ce cas, il faudra analyser votre code en le divisant en différentes parties. Vous devrez que chaque partie fonctionne correctement afin d’identifier d’où vient l’erreur. C’est ici que les cas tests sont très utiles.
Les erreurs de syntaxe
Elles sont faciles à corriger et bien indiquées par les outils actuels de développement. Le logiciel vous indiquera les lignes sur lesquelles il détecte une erreur. Vous pourrez toujours exécuter le code, Python vous renverra une erreur mais ça sera uniquement sur la première occurrence.

Mon environnement de développement m’indique une erreur en ligne 21. Si on lance le programme, Python me renvoie une erreur de syntaxe. Python renvoie également une proposition de solution suivant l’erreur rencontrée.
Voici une petite liste de vérification qui vous permettra d’éviter ces erreurs syntaxiques avant de lancer votre programme :
- N’utilisez pas les mots clés dédiés à python (for, pass, break, continue, def, import, …)
- Vérifier que le caractère « : » est bien présent dans la définition de vos boucles for, while, if et vos fonctions.
- Que vos opérateurs soient bien tous refermés : parenthèses, crochets, accolades
- pas d’erreur sur l’utilisation des symboles « == » et « = »
- pas d’erreur d’indentation pour la définition de vos blocs
Les erreurs d’exécution
NameError
Cette erreur survient lorsque vous appelez une variable locale ou globale n’est pas trouvée. Généralement, les logiciels de développements vous informent qu’une variable est utilisée mais non déclarée.
TypeError
Si vous essayez d’associer deux variables de type différents et non compatibles, vous obtiendrez cette erreur. Par exemple, si vous concaténez une chaîne de caractères avec un entier, Python vous dira qu’il ne sait effectuer cette opération entre les deux variables.
KeyError
Ce type d’erreur survient quand vous essayez d’accéder à un dictionnaire avec une clé qui n’existe pas. Il faudra vérifier la valeur de la clé, son origine et la manière dont elle est écrite. Les clés des dictionnaires sont sensibles à la casse donc une majuscule peut être la source de l’erreur.
AttributeError
Si vous essayez d’accéder à une méthode qui n’existe pas pour un type de variable, Python vous renverra ce type d’erreur. Cette remarque est valable pour les attributs et les fonctions d’une classe. Si vous êtes certain de l’existence de la fonction, il faudra vérifier l’orthographe dans un premier temps.
IndexError
Si vous essayez d’accéder à l’élément d’une liste avec un indice qui n’existe pas, vous récupérerez une erreur de ce type de la part de Python. Ceci est valable pour toutes les variables qui utilisent des indices comme les chaînes de caractères et les tableaux. Vous pourrez vérifier la valeur de l’indice ainsi que la dimension des variables pour identifier la source de l’erreur.
ModuleNotFoundError / ImportError
Lorsque vous importez un module et que celui-ci n’est pas installé ou n’existe pas, Python vous renvoie l’erreur « ModuleNotFoundError ». Le nom de l’erreur est plutôt explicite. Si vous importez un module à partir d’une librairie, vous aurez une autre erreur explicite : « ImportError ».
OSError / EOFError
Si votre script interagit avec votre système et que celui-ci renvoie une erreur, Python renverra alors à son tour une erreur de type « OSError ». Ces erreurs surviennent souvent quand le fichier n’existe pas ou qu’il n’y a plus assez de mémoire sur le disque.
Lors de la lecture d’un fichier ligne à ligne, si vous avez atteint la fin du fichier, et que vous essayez d’utiliser la variable malgré tout, vous aurez une erreur de type « EOFError ».
Les erreurs de sémantique
Les erreurs de sémantique ne provoque pas d’erreur dans le programme. Le code est informatiquement correcte cependant il n’effectue pas ce que vous souhaitez. C’est pour cela qu’il est très important d’avoir des cas tests dont vous connaissez d’avance le résultat.
Si jamais il ne se passe strictement rien lors de l’exécution de votre programme, vérifiez que vous n’avez pas que des fonctions et qu’au moins un appel est réalisé.
Si jamais le programme se lance mais qu’il ne se passe rien, il est possible que vous soyez rentré dans une boucle infinie. Vous pouvez arrêter le programme avec le raccourci CTRL+C. Pour se rendre compte de ce qu’il se passe vraiment, vous pouvez faire en sorte d’afficher des messages à certains points stratégiques de votre programme. Par exemple, si vous soupçonnez une boucle de tourner indéfiniment, vous pouvez utiliser la fonction « print » pour vous indiquer que vous rentrez dans la boucle et la même fonction juste après le bloc. Si vos deux messages s’affichent c’est que la boucle en question n’est pas à l’origine de l’erreur.
Si vous avez des expressions compliquées, n’hésitez pas à les décomposer sur plusieurs lignes. Cela ne fera qu’améliorer la lisibilité. Faites de même avec les fonctions. Une fonction trop compliquée sera source d’erreur et difficile à corriger.
Vous pouvez également utiliser une méthode incrémentale pour développer vos programmes. Vous écrivez la structure globale en déclarant les fonctions. Au lieu de développer vos fonctions, vous pouvez directement mettre le mot clé « return » avec une valeur qui correspond à ce que vous cherchez. Ce faisant vous pouvez vous focaliser sur les étapes importantes et vous développerez le reste plus tard.
Pour finir …
Nous avons vu quelques cas d’erreurs possibles dans votre code. Avec l’expérience, vous saurez les résoudre plus rapidement et vous acquerrez des automatismes. Si vous utilisez un logiciel de développement, il vous guidera sur les deux premières erreurs. Concernant les erreurs de sémantique, n’oubliez jamais de tester et vérifier le bon fonctionnement de votre programme. D’autres méthodes plus avancées existent et pourront faire l’objet d’un article dédié.
Merci de m’avoir lu, n’hésitez pas à laisser un commentaire, je vous répondrai avec plaisir.
A bientôt,
Benjamin