Au fur et à mesure que vous avancerez dans la programmation, vous rencontrerez naturellement beaucoup d'erreurs (ou bogues, adapté de l'anglais "bugs"). Générer, comprendre et régler des erreurs est une partie importante de la programmation. Python fera de son mieux pour exécuter tout ce que vous lui direz d'exécuter, mais s'il ne comprend pas ce que vous lui demandez, il n'exécutera pas votre programme. Dans ce cas, Python vous donnera un peu d'information sur ce qui s'est mal passé afin de vous aider à le résoudre.
Voici deux erreurs Python.
Dans ce premier exemple, nous avons oublié d'utiliser les parenthèses qui sont nécessaires pour la fonction print(...)
. Python ne comprend pas ce que vous essayez de faire.
Voici un deuxième exemple de bogue en Python.
Dans ce deuxième exemple, nous avons oublié de définir la variable salutations
. Python sait ce que vous lui demandez de faire, mais comme salutations
n'a pas été défini, une erreur est générée.
Une erreur de syntaxe (syntax error en anglais) est générée lorsque Python ne comprend pas ce que vous lui demandez de faire. Une erreur d'exécution (run-time error en anglais) est générée lorsque Python comprend ce que vous demandez mais qu'il rencontre des problème lorsqu'il suit vos instructions.
En français, une erreur de syntaxe serait comme la phrase
S'il vous plaît chat chien singe.
La grammaire de cette phrase ne donne pas de sens. D'un point de vue de la grammaire française, il manque un verbe (action). Vous ne pouvez pas comprendre ce que l'on vous demande de faire. Syntaxe est synonyme de grammaire en programmation.
En français, une erreur d'exécution serait comme la phrase
S'il vous plaît, mangez le piano.
La phrase donne un sens du point de vue de la grammaire — il y a un verbe et un nom où il se doit — et vous savez donc ce que l'on vous demande de faire. Mais vous allez rencontrer des problèmes lorsque vous allez essayer de manger le piano (sauf si vous êtes un termite). Cela s'appelle une erreur d'exécution car elle a lieu lorsque le programme s'exécute.
Nous parlerons également d'erreurs logiques (logic errors en anglais) à la fin, ce qui signifie que votre programme s'exécute jusqu'au bout sans planter mais qu'il ne produit pas le résultat attendu. En voici un exemple
Veuillez s'il vous plaît fermer la porte arrière afin que les insectes n'entrent pas.
Ce serait une erreur logique si la porte avant était aussi ouverte : même si la commande donne du sens et que vous pouvez fermer la porte arrière, cela n'a pas l'effet escompté de garder les insectes dehors puisqu'ils peuvent entrer par la porte avant.
Erreurs de syntaxe courantes en Python
Voici d'autres exemples d'erreurs de syntaxes qui peuvent être générées en Python. Une chose très générale qui peut arriver est que Python rencontre un symbole qui n'est pas où il est attendu.
Python nous dit SyntaxError: invalid syntax
et pointe avec ^
au point d'exclamation. Le problème est que !
n'a pas de sens en Python. L'erreur de syntaxe disparaitrait si nous écrivions print("Bonjour, Monde!")
à la place, parce que Python comprendrait que !
appartient au texte Bonjour, Monde
.
Voici une autre erreur de syntaxe qui est plus subtile.
Le problème est que continue
est un mot réservé en Python. Si vous aviez écrit procede
au lieu de continue
, il n'y aurait pas eu de problème. Cliquez ici pour voir la liste de tous les "mots réservés" en Python.
Si vous utilisez les guillemets autour d'un texte et que vous oubliez le 2ème, ou que vous utilisez des parenthèses et que vous oubliez la 2ème, vous aurez une erreur de syntaxe :
Dans cette erreur, EOL signifie End Of Line (fin de ligne) : Python s'attendait à une autre "
mais la ligne s'est terminée avant qu'il ne le trouve.
De même, EOF signifie End Of File : Python a cherché une )
mais la ligne s'est terminée avant qu'il ne la trouve.
Erreurs d'exécution
Voici plusieurs erreurs d'exécution courantes. Python est capable de comprendre ce que le programme dit, mais il est face à des problèmes lorsqu'il essaye d'exécuter des instructions.
- utiliser une variable ou une fonction non définie. Cela peut aussi arriver si la casse des lettres (majuscules ou minuscules) n'est respectée dans un nom de variable :
- diviser par zéro, ce qui ne donne pas de sens en mathématiques. (Pourquoi ? Comme 0 fois n'importe quel nombre est égal à 0, il n'y a pas de solution à l'équation 1 = X * 0, et donc 1/0 n'est pas défini.)
- utiliser des opérateurs avec des données du mauvais type
- écrire une virgule
,
au lieu d'un point.
comme séparateur décimal
Vous trouverez d'autres moyens de générer des erreurs au fur et à mesure que vous en apprendrez plus sur Python.
Quelle est la différence technique entre une erreur de syntaxe et une erreur d'exécution ? Voici un exemple qui compare une erreur de syntaxe et une erreur d'exécution. Regardez la sortie du programme.
Le programme avec l'erreur d'exécution a produit une sortie mais pas celui avec l'erreur de syntaxe. Ceci s'explique par le fait que Python s'exécute en deux étapes :
Donc un programme qui a une erreur de syntaxe ne sera pas du tout exécuté, mais un programme avec une erreur d'exécution exécutera les étapes qui se trouvent avant que l'erreur n'aie lieu.
|
Erreurs logiques
Votre programme peut s'exécuter sans planter (pas d'erreurs de syntaxe ni d'erreurs d'exécution) mais tout de même ne pas faire ce qu'il est supposé faire. Par exemple, peut être que vous voulez que votre programme calcule la moyenne de deux nombres : la moyenne de x et y est définie par
Pourquoi ce programme ne fonctionne-t-il pas ?
La moyenne devrait être
mais le programme écrit 5.0
! L'erreur est liée à "l'ordre des opérations" en arithmétique. Quand vous écrivez x + y / 2
, cela signifie mathématiquement . Pour résoudre le problème, la troisième ligne de notre programme devrait être moyenne
= (x + y) / 2
, ce qui indique clairement à Python que nous voulons la valeur , où nous additionnons d'abord puis divisons ensuite.
Vous avez des erreurs logiques parce que vous n'avez pas conçu votre programme correctement, ou parce que vous n'avez pas écrit votre code en suivant votre conception correctement (comme la moyenne
par exemple). Les erreurs logiques sont difficiles à détecter, surtout dans un long programme, mais en vous améliorant à écrire du code, vous deviendrez aussi meilleur à éviter les erreurs logiques. La leçon 6D vous donnera des indices pour éviter les erreurs logiques.
Exercices
Maintenant que vous avez complété la leçon, nous avons trois exercices sur le débogage (résoudre les erreurs dans les programmes). Vous pouvez essayer de trouver les erreurs avant d'exécuter les programmes, ou vous pouvez d'abord les exécuter et utiliser les réponses de Python pour déterminer ce qui doit être fixé.
Chaque programme vient avec du code déjà préparé pour vous. Vous devez seulement changer quelques caractères (lettres/symboles/nombres) pour fixer chaque programme. Le correcteur rejettera les solutions qui changent trop de caractères. Sélectionnez Réinitialiser code si vous voulez revenir à la version originale. |
Le dernier problème est plus difficile que les deux précédents. Si vous êtes bloqués, vous pouvez passer l'exercice et passer à la prochaine leçon. Vous pouvez toujours vérifier quels problèmes vous avez complétés ou passés en allant sur la page Mon progrès.
Une fois que vous avez trouvé tous les bogues, allez à la prochaine leçon !