Bonjour,
À savoir : Ce tutoriel risque d'être modifié, changé de place, voir même supprimé selon les décisions de l'équipe hackademics. Sa présence, est dû aux attentes des membres du forum participant au cours Python.
Tout conseils, modifications à votre demande, sera envoyé par MP.
QU'EST-CE QU'UNE ERREUR DE SYNTAXE ?
Une erreur de syntaxe est visible sur votre interpréteur par une petite flèche vous indiquant l'endroit, ainsi que par ce message :
L'interpréteur est simplement entrain de vous dire qu'il ne reconnaît pas ce langage. En d'autre termes, vos mots clés n'existent pas en python, où vous ne l'avez pas écris correctement, une majuscule/minuscule en trop, etc...
QUE FAIRE?
Relire tout simplement la documentation, en faisant attention de respecter scrupuleusement la façon dont est écrite la fonction.
QU'EST-CE QU'UNE EXCEPTION?
Même si votre syntaxe est correcte, vous n'êtes pas à l'abri. Imaginons que vous souhaitiez diviser un nombre par zéro, vous savez que cela n'est pas possible, eh bien python ne peut pas faire mieux non plus
Nous avons donc une exception de type ZeroDivisionError qui indique que vous avez fait une division par zéro.
Mais des exceptions, il y en a plein, comme vous pouvez le voir sur la documentation...
Seulement on a pas toujours envie que le programme s'arrête, comme on ne voudrait pas que lors d'une division par zéro, il y est une erreur, mais une valeur par défaut.
Voici une possibilité afin de manipuler une exception de type ZeroDivisionError.
J'ai une fonction div retournant la division de a par b
Comme on le voit dans ce code, si le dénominateur vaut 0, on retournera la valeur par defaut, ici default.
En pratique, voici la démonstration :
Pour cela un plan s'impose
Autre manipulation possible des exceptions
Comment fonctionne la déclaration try-except?
Peut-on manipuler plusieurs exceptions?
Lever une exception (la vôtre)
I) AUTRE MANIPULATION POSSIBLE DES EXCEPTIONS
Une autre possibilité est d'utiliser la déclaration try-except.
Dans l'exemple précédent, on peut écrire notre code de cette façon...
Le résultat sera le même
Bien-sûr il y a d'autres syntaxes possibles de try-except, je vous laisse découvrir tout cela dans la documentation tranquillement.
II) COMMENT FONCTIONNE LA DÉCLARATION TRY-EXCEPT?
III) PEUT-ON MANIPULER PLUSIEURS EXCEPTIONS?
Oui c'est possible, imaginons que vous vouliez contrôler les erreurs de l'utilisateur.
Au lieu d'un nombre il rentre une lettre 2/a par exemple. On pourrait retourner notre valeur par défaut pour éviter que notre programme stoppe.
Comment savoir quelle erreur est levée par l'interpréteur? Facile, regardez!
Une exception de type TypeError est levée, il suffit de maintenant la contrôler dans notre code.
On a bien une erreur que l'on gère de la façon que l'on souhaite et non imposée par l'interpréteur.
IV) LEVER UNE EXCEPTION (la vôtre)
Imaginons que lors d'une erreur d'entrée du second argument, vous souhaitiez interrompre le programme, mais à votre sauce.
C'est possible! On utilisera le mot clé raise.
Le test :
En ce qui concerne les exercices, vous pouvez utiliser ce cours pour rendre la gestion des erreurs entrées utilisateur de vos codes précédents (des autres cours).
Bonne journée,
À savoir : Ce tutoriel risque d'être modifié, changé de place, voir même supprimé selon les décisions de l'équipe hackademics. Sa présence, est dû aux attentes des membres du forum participant au cours Python.
Tout conseils, modifications à votre demande, sera envoyé par MP.
QU'EST-CE QU'UNE ERREUR DE SYNTAXE ?
Une erreur de syntaxe est visible sur votre interpréteur par une petite flèche vous indiquant l'endroit, ainsi que par ce message :
Envoyé par interpréteur
QUE FAIRE?
Relire tout simplement la documentation, en faisant attention de respecter scrupuleusement la façon dont est écrite la fonction.
QU'EST-CE QU'UNE EXCEPTION?
Même si votre syntaxe est correcte, vous n'êtes pas à l'abri. Imaginons que vous souhaitiez diviser un nombre par zéro, vous savez que cela n'est pas possible, eh bien python ne peut pas faire mieux non plus
Code:
>>> 2/0 Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: division by zero
Mais des exceptions, il y en a plein, comme vous pouvez le voir sur la documentation...
Seulement on a pas toujours envie que le programme s'arrête, comme on ne voudrait pas que lors d'une division par zéro, il y est une erreur, mais une valeur par défaut.
Voici une possibilité afin de manipuler une exception de type ZeroDivisionError.
Code:
def div(a, b, default=0): if b == 0: return default return a/b
Comme on le voit dans ce code, si le dénominateur vaut 0, on retournera la valeur par defaut, ici default.
En pratique, voici la démonstration :
Code:
>>> div(4, 2) 2.0 >>> div(4, 0) 0 # la valeur default vaut 0 par défaut dans notre fonction div >>> div(4, 0, 2) 2 # la valeur default vaut 2
Autre manipulation possible des exceptions
Comment fonctionne la déclaration try-except?
Peut-on manipuler plusieurs exceptions?
Lever une exception (la vôtre)
I) AUTRE MANIPULATION POSSIBLE DES EXCEPTIONS
Une autre possibilité est d'utiliser la déclaration try-except.
Dans l'exemple précédent, on peut écrire notre code de cette façon...
Code:
def div(a, b, default=0): try: return a/b except ZeroDivisionError: return default
Code:
>>> def div(a, b, default=0): ... try: ... return a/b ... except ZeroDivisionError: ... return default ... >>> div(4, 2) 2.0 >>> div(4, 0) 0 >>> div(4, 0, 2) 2
II) COMMENT FONCTIONNE LA DÉCLARATION TRY-EXCEPT?
1) Les lignes de code à l'intérieur du try sont exécutées
2) Si pas d'exception découverte, alors la partie code sous except est ignorée
3) Si une exception, alors on stoppe l'exécution du code dans la partie try, on recherche si l'exception levée se trouve dans except ... Si c'est le cas, il exécute le code de la partie except
4) Si une exception, mais qu'elle n'est pas trouvée dans except ... le programme s'arrêtera avec une erreur vous indiquant l'endroit et le type d'erreur
2) Si pas d'exception découverte, alors la partie code sous except est ignorée
3) Si une exception, alors on stoppe l'exécution du code dans la partie try, on recherche si l'exception levée se trouve dans except ... Si c'est le cas, il exécute le code de la partie except
4) Si une exception, mais qu'elle n'est pas trouvée dans except ... le programme s'arrêtera avec une erreur vous indiquant l'endroit et le type d'erreur
III) PEUT-ON MANIPULER PLUSIEURS EXCEPTIONS?
Oui c'est possible, imaginons que vous vouliez contrôler les erreurs de l'utilisateur.
Au lieu d'un nombre il rentre une lettre 2/a par exemple. On pourrait retourner notre valeur par défaut pour éviter que notre programme stoppe.
Comment savoir quelle erreur est levée par l'interpréteur? Facile, regardez!
Code:
>>> 2/"a" Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for /: 'int' and 'str'
Code:
def div(a, b, default=0): try: return a/b except (ZeroDivisionError, TypeError): return default
Code:
>>> div(2, "a") 0
IV) LEVER UNE EXCEPTION (la vôtre)
Imaginons que lors d'une erreur d'entrée du second argument, vous souhaitiez interrompre le programme, mais à votre sauce.
C'est possible! On utilisera le mot clé raise.
Code:
def div(a, b): if b == 0: raise Exception("Entrer un nombre différent de 0") return a/b
Code:
>>> div(4, 0) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "./test.py", line 3, in div raise Exception("Entrer un nombre différent de 0") Exception: Entrer un nombre différent de 0
Bonne journée,