Aller au contenu

Erreur de syntaxe

Cette erreur peut provenir :

  • du non respect de la syntaxe du langage,
  • d'un oubli d'une indentation,
  • d'un oubli d'un paramètre dans une fonction,
  • d'une utilisation d'une variable non initialisée,
  • etc.

Dans ce cas, le programme ne s'exécute pas et la console signale cette erreur.

Corriger une erreur de syntaxe

Les outils pour corriger une telle erreur :

  • Relire le cours.
  • Consulter la documentation python en ligne ou en local (fonction help()...)
  • Utiliser les f-strings et la fonction print() pour afficher les résultats intermédiaires et comprendre à quel moment une variable n'est pas du type attendu.
  • On peut également utiliser le site python tutor qui permet de visualiser l'état des variables au fur et à mesure du déroulement, ce qui facilite le repèrage de la source de l'erreur.

Attention

Toute erreur de ce type devra être corrigée, que ce soit durant les séances d'exercices ou pour un travail en-dehors du temps de classe. Pour y parvenir, connaître son cours est nécessaire...

Pour un devoir à rendre, la présence d'une telle erreur entraîne la note minimale.

Exemple n°1

  1. Copiez le code de cette fonction, collez-le dans un éditeur Python puis exécutez-le.

    1
    2
    3
    4
    5
    def val_abs(a, b):
        if a-b > 0:
            return a-b
        else
            return b-a
    
    Que signifie l'erreur signalée par la console ?

    Une réponse

    Voici l'exécution dans la console :

    >>> (executing file)
      File "<tmp 1>", line 4
        else
           ^
    SyntaxError: invalid syntax
    
    Une erreur de syntaxe est signalée au niveau du else : il manque les deux-points « : ».

  2. Corrigez ensuite cette erreur.

    Une réponse
    1
    2
    3
    4
    5
    def val_abs(a, b):
        if a-b > 0:
            return a-b
        else:
            return b-a
    

Exemple n°2

  1. Copiez le code de cette fonction, collez-le dans un éditeur Python puis exécutez-le.
    1
    2
    3
    4
    5
    def multi(a, b):
        while b > 0:
            result = result + a
            b = b-1
        return resultat
    
  2. Effectuez un appel à la fonction multi(). Que signifie l'erreur signalée par la console ?

    Une réponse

    Voici l'exécution dans la console :

    >>> multi(3, 7)
    ----> 3         result = result + a
    UnboundLocalError: local variable 'result' referenced before assignment
    

    Une erreur de syntaxe est signalée en ligne 3 : la variable d'accumulation result est utilisée sans avoir été initialisée.

  3. Corrigez ensuite cette erreur.

    Une réponse
    1
    2
    3
    4
    5
    6
    def multi(a, b):
        result = 0
        while b > 0:
            result = result + a
            b = b-1
        return resultat