From 4ba8cf59dc2b0ac87d7aa8bdda6af9301217f231 Mon Sep 17 00:00:00 2001 From: NiAnc Date: Thu, 22 May 2014 14:48:17 -0400 Subject: [PATCH 1/2] =?UTF-8?q?Ajout=20d'une=20section=20sur=20'Comment=20?= =?UTF-8?q?lire=20les=20erreurs=20pr=C3=A9sent=C3=A9es=20par=20l'interpret?= =?UTF-8?q?eur=20Python.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/erreur.rst | 147 ++++++++++++++++++++++++++++++++++++++++++++++ source/index.rst | 1 + 2 files changed, 148 insertions(+) create mode 100644 source/erreur.rst diff --git a/source/erreur.rst b/source/erreur.rst new file mode 100644 index 0000000..98820b5 --- /dev/null +++ b/source/erreur.rst @@ -0,0 +1,147 @@ +Python +====== + +Comment lire les messages d'erreurs +----------------------------------- + +Il est important de bien comprendre l'interpreteur python pour pouvoir lire et débugguer facilement sont programme. Par exemple, le programme suivant contient une erreur. + +.. code-block:: python + :linenos: + + def fonc(): + def foo(a, b): + return a / b + return foo + + a = fonc() + a(2, 0) + +Il renverra un message d'erreur suivant. + +.. code-block:: none + + ---------------------------------------------------------- + ZeroDivisionError Traceback (most recent call last) + in () + 5 + 6 a = fonc() + ----> 7 a(2, 0) + + in foo(a, b) + 1 def fonc(): + 2 def foo(): + ----> 3 return a / b + 4 return foo + 5 + + ZeroDivisionError: division by zero + + +Ce message d'erreur est en deux partie. + +Traceback +~~~~~~~~~ + +Le Traceback est la première partie du message d'erreur. Il indique ce que le programme a fait peu avant que l'erreur soit lancé. Dans l'exemple précédent, c'est lors de l'appel de **a(2, 0)** que le programme est entré dans le code de la fonction **foo** où est placé la ligne **return a / b** qui lance l'erreur. + +Erreur +~~~~~~ + +La dernière ligne est celle qui indique qu'elle est le type d'erreur rencontrer. Dans l'exemple précédent, c'est une erreur de type **ZeroDivisionError** qui a été lancé. L'erreur est aussi souvent accompagné d'un message aidant à comprendre l'erreur. Ici, **division by zero**. On comprend qu'on a essayé de diviser par zéro. + +Erreur typique +-------------- + +ZeroDivisionError +~~~~~~~~~~~~~~~~~ + +Erreur de division par zéro. + +.. code-block:: none + + --------------------------------------------------------------------------- + ZeroDivisionError Traceback (most recent call last) + in () + ----> 1 2/0 + + ZeroDivisionError: division by zero + +Vous avez fait une division par zéro. + +IndexError +~~~~~~~~~~ + +Erreur d'indice + +.. code-block:: none + + --------------------------------------------------------------------------- + IndexError Traceback (most recent call last) + in () + 1 liste = [1, 2, 3, 4, 5] + ----> 2 liste[5] + + IndexError: list index out of range + +Vous essayez d'atteindre dans une liste, un tuple, un string, ... un emplacement qui n'existe pas. Vous êtes en dehors du «range» de votre itérable. + +TypeError +~~~~~~~~~ + +Erreur de type. Se manifeste habituelement lors de l'utilisation d'opérateur interdit. + +.. code-block:: none + + --------------------------------------------------------------------------- + TypeError Traceback (most recent call last) + in () + 1 nombre = 5 + ----> 2 nombre[0] + + TypeError: 'int' object is not subscriptable + +Vous essayez d'utiliser un objet non itérable comme un itérable. Un int n'a pas de méthode __getitem__. + +.. code-block:: none + + --------------------------------------------------------------------------- + TypeError Traceback (most recent call last) + in () + ----> 1 un_tuple = (2,) + 2 + + TypeError: can only concatenate tuple (not "int") to tuple + +Faire attention à ne pas faire d'opération avec des objets de type différent. Ici on essaye de concaténé (ajouté) un nombre entier à un tuple. Celà n'est pas possible de la sorte. + +SyntaxError +~~~~~~~~~~~ + +Une erreur de syntaxe. Vous remarquerez q'il n'y a pas de traceback puisque l'erreur se produit lors de la première lecture du document par l'interpreteur et non lors de l'execution. + +.. code-block:: none + + File "", line 1 + un nombre = 2 + ^ + SyntaxError: invalid syntax + +Ici la syntaxe est toute croche. Un nom de variable ne peut contenir un espace. Cette erreur est souvent causé par une virgule ou une parenthèse manquante. + + +KeyboardInterrupt +~~~~~~~~~~~~~~~~~ + +Normalement se produit lorsque vous arretez vous même le programme avec Ctr-C ou en appuyant sur stop dans une IDLE. + +.. code-block:: none + + --------------------------------------------------------------------------- + KeyboardInterrupt Traceback (most recent call last) + in () + 1 while True: + ----> 2 continue + + KeyboardInterrupt: + +N'est souvent pas la faute de programme, puisque c'est normalement vous qui envoyez cette erreur. Si vous en venez là parce que vous trouvez votre procesus long. Vérifiez que vous n'avez pas de boucle infinie. diff --git a/source/index.rst b/source/index.rst index 60cc220..4d95f90 100644 --- a/source/index.rst +++ b/source/index.rst @@ -12,4 +12,5 @@ Table des matières Installation de Python Python, le langage + Python, lire l'interpreteur From 023c842106c39472a8b0ee1406779a518bb87e87 Mon Sep 17 00:00:00 2001 From: NiAnc Date: Thu, 22 May 2014 15:45:00 -0400 Subject: [PATCH 2/2] Correction des fautes d'orthographes. --- source/erreur.rst | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/source/erreur.rst b/source/erreur.rst index 98820b5..2f298c3 100644 --- a/source/erreur.rst +++ b/source/erreur.rst @@ -4,7 +4,7 @@ Python Comment lire les messages d'erreurs ----------------------------------- -Il est important de bien comprendre l'interpreteur python pour pouvoir lire et débugguer facilement sont programme. Par exemple, le programme suivant contient une erreur. +Il est important de bien comprendre l'interpréteur python pour pouvoir lire et débugguer facilement ses programmes. Par exemple, le programme suivant contient une erreur. .. code-block:: python :linenos: @@ -38,17 +38,17 @@ Il renverra un message d'erreur suivant. ZeroDivisionError: division by zero -Ce message d'erreur est en deux partie. +Ce message d'erreur est en deux parties. Traceback ~~~~~~~~~ -Le Traceback est la première partie du message d'erreur. Il indique ce que le programme a fait peu avant que l'erreur soit lancé. Dans l'exemple précédent, c'est lors de l'appel de **a(2, 0)** que le programme est entré dans le code de la fonction **foo** où est placé la ligne **return a / b** qui lance l'erreur. +Le Traceback est la première partie du message d'erreur. Il indique ce que le programme a fait peu avant que l'erreur soit lancée. Dans l'exemple précédent, c'est lors de l'appel de **a(2, 0)** que le programme est entré dans le code de la fonction **foo** où est placé la ligne **return a / b** qui lance l'erreur. Erreur ~~~~~~ -La dernière ligne est celle qui indique qu'elle est le type d'erreur rencontrer. Dans l'exemple précédent, c'est une erreur de type **ZeroDivisionError** qui a été lancé. L'erreur est aussi souvent accompagné d'un message aidant à comprendre l'erreur. Ici, **division by zero**. On comprend qu'on a essayé de diviser par zéro. +La dernière ligne est celle qui indique quel est le type d'erreur rencontré. Dans l'exemple précédent, c'est une erreur de type **ZeroDivisionError** qui a été lancée. L'erreur est aussi souvent accompagnée d'un message aidant à comprendre l'erreur. Ici, **division by zero**. On comprend qu'on a essayé de diviser par zéro. Erreur typique -------------- @@ -112,12 +112,12 @@ Vous essayez d'utiliser un objet non itérable comme un itérable. Un int n'a pa TypeError: can only concatenate tuple (not "int") to tuple -Faire attention à ne pas faire d'opération avec des objets de type différent. Ici on essaye de concaténé (ajouté) un nombre entier à un tuple. Celà n'est pas possible de la sorte. +Faire attention à ne pas utiliser d'opération avec des objets de type différent. Ici on essaye de concaténer (ajouter) un nombre entier à un tuple. Celà n'est pas possible de la sorte. SyntaxError ~~~~~~~~~~~ -Une erreur de syntaxe. Vous remarquerez q'il n'y a pas de traceback puisque l'erreur se produit lors de la première lecture du document par l'interpreteur et non lors de l'execution. +Une erreur de syntaxe. Vous remarquerez q'il n'y a pas de traceback puisque l'erreur se produit lors de la première lecture du document par l'interpréteur et non lors de l'exécution. .. code-block:: none @@ -126,7 +126,7 @@ Une erreur de syntaxe. Vous remarquerez q'il n'y a pas de traceback puisque l'er ^ SyntaxError: invalid syntax -Ici la syntaxe est toute croche. Un nom de variable ne peut contenir un espace. Cette erreur est souvent causé par une virgule ou une parenthèse manquante. +Ici la syntaxe est toute croche. Un nom de variable ne peut contenir un espace. Cette erreur est souvent causée par une virgule ou une parenthèse manquante. KeyboardInterrupt @@ -144,4 +144,4 @@ Normalement se produit lorsque vous arretez vous même le programme avec Ctr-C o KeyboardInterrupt: -N'est souvent pas la faute de programme, puisque c'est normalement vous qui envoyez cette erreur. Si vous en venez là parce que vous trouvez votre procesus long. Vérifiez que vous n'avez pas de boucle infinie. +N'est souvent pas la faute du programme, puisque c'est normalement vous qui envoyez cette erreur. Si vous en venez là parce que vous trouvez votre processus trop long. Vérifiez que vous n'avez pas de boucle infinie.