17. QUELQUES ERREURS COMMUNES

Voici des causes fréquentes d’interruptions d’exécution ou d’erreurs dans les résultats. Les éléments de solution correspondants sont à chercher dans les autres chapitres ... ;-) ... Voir aussi Index.

17.1. Confusion entre minuscules et majuscules dans le identificateurs

Effets: les résultats des calculs sont faux, ou l’on obtient une erreur d’exécution du type NameError: name 'x' is not defined.

17.2. Comparaison == ou != avec des nombres flottants

Effets: des boucles while ne se terminent pas (boucles infinies) ou au contraire ne semblent pas exécutées du tout, ou encore certains if paraissent ignorés par l’interpréteur Python.

17.3. Utilisation de = à la place de ==

Effet: l’interpréteur Python refuse d’exécuter le programme et affiche une message d’erreur du type SyntaxError: invalid syntax.

17.4. Utilisation de la division entière mais résultat flottant attendu

Effets: les résultats des calculs sont faux dans certains cas, et/ou l’on obtient des résultats entiers (sans le . décimal) alors qu’ils ne devraient pas l’être.

17.5. Utilisation dans un calcul d’une variable n’ayant pas encore reçu de valeur

Effet: on obtient une erreur d’exécution du type NameError: name 'x' is not defined.

Deux cas sont souvent la cause de ce type d’erreurs:

  • ordre des calculs non approprié.
  • une variable non initialisée avant une boucle.

17.6. Boucle for ayant comme argument une liste vide

Effet: le contenu de la boucle n’est pas exécuté.

Ceci se rencontre lorsque la liste utilisée par la boucle est obtenue par calcul, et peut arriver même avec un simple range() comme dans for i in range(K): si lors de l’exécution K a une valeur de zéro.

17.7. Problème d’indentation suite à un mélange entre tabulations et espaces

Effet: à l’écran les indentations semblent correctes, mais elles ne sont pas correctement interprétées/reconnues par Python.

Ceci provient souvent d’une combinaison entre espaces et tabulations utilisée pour réaliser l’indentation d’un partie du code, hors pour l’interpréteur Python une tabulation n’est pas équivalente à un ou plusieurs espaces. Une tabulation n’est équivalente qu’à une autre tabulation !

Pistes de solutions:

  • dans l’éditeur activer l’option affichage des caractères spéciaux pour repérer les tabulations et les espaces, si cette option est disponible.
  • et/ou transformer toutes les tabulations en espaces (à l’aide d’une commande du type “rechercher/remplacer”), et re-vérifier l’indentation.
  • ou encore utiliser idle pour la saisie des programmes (dans sa configuration par défaut, idle transforme les tabulations en espaces au fur et à mesure de la frappe).

17.8. Lettres accentuées non reconnues dans les chaînes ou dans les commentaires

Effet: l’interpréteur Python refuse d’exécuter le programme et affiche une message d’erreur du type SyntaxError: Non-ASCII character. Voir Support des accents.