Erreur Python : SyntaxError

NSI Première

Définition

La `SyntaxError` signale que Python n'arrive même pas à lire ton programme : la grammaire du langage n'est pas respectée. Le message exact est `SyntaxError: invalid syntax` (ou une variante plus précise comme `SyntaxError: '(' was never closed`). C'est une erreur détectée avant l'exécution : aucune ligne du fichier n'est lancée tant qu'elle n'est pas corrigée. Les causes les plus fréquentes sont un deux-points oublié, une parenthèse ou un guillemet non fermé, ou la confusion entre `=` (affectation) et `==` (comparaison).

Exemple corrigé

Énoncé

Voici un code qui déclenche cette erreur :

```python
note = 14
if note >= 10
print("Reçu")
else:
print("Recalé")
```

À l'exécution, Python s'arrête immédiatement :

```
File "notes.py", line 2
if note >= 10
^
SyntaxError: expected ':'
```

Solution

La cause : la ligne `if note >= 10` ne se termine pas par un deux-points. En Python, toute structure qui ouvre un bloc (`if`, `else`, `elif`, `for`, `while`, `def`, etc.) doit finir par `:`. Le petit `^` dans le message pointe l'endroit où Python attendait le caractère manquant.

Code corrigé :

```python
note = 14
if note >= 10:
print("Reçu")
else:
print("Recalé")
```

Le bon réflexe : quand tu vois une `SyntaxError`, regarde la ligne indiquée *et celle juste au-dessus*, puis vérifie les deux-points, parenthèses et guillemets bien fermés.

Erreurs classiques

  • Confondre `=` (affecter une valeur, ex. `x = 5`) et `==` (tester l'égalité, ex. `if x == 5:`). Écrire `if x = 5:` provoque une `SyntaxError`.
  • Croire que l'erreur est sur la ligne affichée alors qu'une parenthèse ou un guillemet a été oublié à la ligne *précédente* : Python ne détecte le problème qu'au caractère suivant.
  • Ne pas distinguer `SyntaxError` (le code est mal écrit, rien ne s'exécute) d'une erreur d'exécution comme `NameError` ou `TypeError` (le code est valide mais plante en cours de route).

Toutes les notions