expected an indented block
Python
Erreur courante
Explication
L'erreur `IndentationError: expected an indented block` survient quand une instruction qui ouvre un bloc (terminée par `:` — un `if`, `for`, `while`, `def`, `class`, `try`...) **n'est pas suivie d'un corps indenté**. Python attend au moins une ligne en retrait après les deux-points.
```python
def saluer():
print("Bonjour") # le corps devrait être indenté
# IndentationError: expected an indented block
```
Causes courantes
- **Corps de bloc non indenté** après un `:`. - **Bloc laissé vide** (un `if` ou une fonction sans contenu). - **Commentaire seul** comme corps (un commentaire ne compte pas comme instruction). - **Mélange tabulations/espaces** qui casse l'alignement.
1. Indentez le corps du bloc
def saluer():
print("Bonjour") # ✅ 4 espaces
2. Utilisez pass pour un bloc volontairement vide
def a_implementer():
pass # ✅ corps « vide » valide
3. Un commentaire ne suffit pas comme corps
if x > 0:
# TODO
pass # il faut une vraie instruction, ici pass
Comment prevenir cette erreur
- **Indentez systématiquement de 4 espaces** après chaque `:`.
- **Configurez votre éditeur** pour convertir les tabulations en espaces.
- Utilisez un formateur (`black`) qui normalise l'indentation automatiquement.
- Référence : [PEP 8 — Indentation](https://peps.python.org/pep-0008/#indentation).
Besoin d'aide sur votre projet ?
Besoin d'aide sur un probleme technique ? Decrivez-le pour des recommandations.
Nous contacterQuestions frequentes
Quelle différence avec `unexpected indent` ?
`expected an indented block` = il **manque** une indentation (corps absent après un `:`). `unexpected indent` = il y en a une **en trop** là où on n'en attendait pas. Ce sont les deux faces du même mécanisme.
Comment écrire une fonction que je remplirai plus tard ?
Mettez `pass` (ou un `...` / `raise NotImplementedError`) comme corps : `def f(): pass`. Python considère alors le bloc comme valide.