Erreurs#

En appuyant sur le bouton Run, Python va d'abord compiler le programme et ensuite l'exécuter.

Compilation#

Lors de la compilation, Python

  1. lit le code,

  2. vérifie qu'il ne comprend pas d'erreur de syntaxe,

  3. transforme le code en un langage compréhensible par l'ordinateur.

Exécution#

L'exécution sera effectuée seulement s'il n'y a pas eu de problème pendant la compilation. Python va exécuter les instructions du programme, suivant un ordre bien défini.

En programmation, il existe trois types d'erreurs:

  1. Les erreurs de syntaxe

  2. Les erreurs d'exécution

  3. Les erreurs de logique

Erreur de syntaxe#

Les erreurs de syntaxe sont détectées lors de la compilation. Python vérifie que la syntaxe est correcte:

  • les : sont présents et au bon endroit → Sinon SyntaxError

  • une parenthèse ouverte est toujours fermée → Sinon SyntaxError

  • un guillemet ouvert est toujours fermé → Sinon SyntaxError

  • l'indentation est correcte → Sinon IndentationError

  • ...

Si Python trouve une erreur de syntaxe, le programme s'arrête, car il ne comprend pas le programme et ne peut donc pas l'exécuter. L'erreur est affichée sur la console.

Exemple 1#

n = 7
if n < 10
  print("n est plus petit que 10.)
else:
  print("n est plus grand ou égal à 10."

Erreur d'exécution#

Les erreurs d'exécution sont détectée pendant l'exécution. La syntaxe est correcte, mais une instruction lui demande de faire quelque chose d'"illégal", par exemple:

  • une division par zero → ZeroDivisionError

  • accéder à la valeur d'une variable qui n'existe pas → NameError

  • appeler une fonction avec un nombre de paramètres incorrect → TypeError

Si Python trouve une erreur d'exécution, il "plante", c'est-à-dire qu'il s'arrête de manière abrupte.

Exemple 2#

a = 7
b = 0
print(a / b)
print(c)

Erreur de logique#

Python ne détecte aucune erreur, le programme est compilé et exécuté, mais le résultat n'est pas celui attendu.

Exemple 3#

def affiche_somme(a, b):
  print("La somme de", a, "et", b, "donne", a - b)

affiche_somme(15, 18)

Exercices#

Exercice 1#

Les programmes suivants contiennent tous une erreur.

  • Trouvez l'erreur, si possible sans exécuter le programme.

  • Déterminez son type (syntaxe, exécution, logique).

  • Corrigez-la.

  1. def affiche_aire(longueur, largeur):
      print(longueur * largeur)
    
    long = 10
    affiche_aire(long, larg)
    
  2. n = 0
    while n < 10:
    print(n)
    n += 2
    
  3. for i in range(9 / 2):
      print(i * 5)
    
  4. for i in range(2)
      print(i)
    

Exercice 2#

Le programme suivant contient une erreur de logique. Testez le programme avec différentes valeurs pour la trouver et corrigez-la.

age = 18
if age >= 18:
  print("Tu payes le prix adulte.")
elif age >= 65:
  print("Tu payes le prix retraité")
else:
  print("Tu payes le prix enfant.")

Exercice 3#

Il est souvent difficile de débugger un code qui ne fonctionne pas. En s'aidant des messages d'erreurs affichés, corrigez le programme ci-dessous qui calcule l'aire et le périmètre d'un triangle isocèle et rectangle dont la base (hypoténuse) est connue.

Triangle isocèle rectangle
from math import sqrt

def affiche_aire(base, hauteur)
  aire_triangle = base * hauteur
  print("L'aire vaut", aire_triangle)

def affiche_perimetre(cote1, cote2, cote3):
  perimetre = cote1 + cote2 + cote3
  print("Le périmètre vaut" perimetre)

base = 500
cathete = base / 2
cote = sqrt(cathete**2 + cathete**2)
aire = affiche_aire(base, hauteur)
perimetre = affiche_perimetre(base, cote, cote)