Il y a en fait plusieurs choses que vous devez savoir sur l'indentation en Python :
Python se soucie vraiment de l'indention.
Dans beaucoup d'autres langues, le tiret n'est pas nécessaire mais améliore la lisibilité. En Python, l'indentation remplace le mot-clé begin / end
ou { }
et est donc nécessaire.
Ceci est vérifié avant l'exécution du code, donc même si le code avec l'erreur d'indentation n'est jamais atteint, il ne fonctionnera pas.
Il y a différentes erreurs d'indentation et le fait de les lire aide beaucoup :
1. "IndentationError : expected an indented block" (Erreur d'indentation : on s'attendait à un bloc indenté)
Il y a deux raisons principales pour lesquelles vous pourriez avoir une telle erreur :
- Vous avez un " :" sans un bloc en retrait derrière.
Voici deux exemples :
Exemple 1, pas de bloc en retrait :
Entrée :
if 3 != 4:
print("usual")
else:
Sortie :
File "<stdin>", line 4
^
IndentationError: expected an indented block
Le résultat indique que vous devez avoir un bloc indenté à la ligne 4, après l'élément else:
déclaration
Exemple 2, bloc non indenté :
Entrée :
if 3 != 4:
print("usual")
Sortie
File "<stdin>", line 2
print("usual")
^
IndentationError: expected an indented block
Le résultat indique que vous devez avoir un bloc indenté ligne 2, après l'élément if 3 != 4:
déclaration
- Vous utilisez Python2.x et vous avez un mélange de tabulations et d'espaces :
Entrée
def foo():
if 1:
print 1
Veuillez noter qu'avant if, il y a une tabulation, et avant print, il y a 8 espaces.
Sortie :
File "<stdin>", line 3
print 1
^
IndentationError: expected an indented block
C'est assez difficile de comprendre ce qui se passe ici, il semble qu'il y ait un bloc d'indentation... Mais comme je l'ai dit, j'ai utilisé des tabulations et des espaces, et vous ne devriez jamais faire cela.
- Vous pouvez obtenir des informations ici .
- Supprimez toutes les tabulations et remplacez-les par quatre espaces.
- Et configurez votre éditeur pour qu'il le fasse automatiquement.
2. "IndentationError : indentation inattendue"
Il est important d'indenter les blocs, mais uniquement les blocs qui doivent l'être. Donc, en gros, cette erreur dit :
- Vous avez un bloc en retrait sans un " :" avant.
Exemple :
Entrée :
a = 3
a += 3
Sortie :
File "<stdin>", line 2
a += 3
^
IndentationError: unexpected indent
La sortie indique qu'il ne s'attendait pas à un bloc de retrait ligne 2, alors vous devriez le supprimer.
3. "TabError : utilisation incohérente des tabulations et des espaces dans l'indentation" (python3.x uniquement)
- Vous pouvez obtenir des informations ici .
- Mais en fait, vous utilisez des tabulations et des espaces dans votre code.
- Tu ne veux pas ça.
- Supprimez toutes les tabulations et remplacez-les par quatre espaces.
- Et configurez votre éditeur pour qu'il le fasse automatiquement.
Finalement, pour revenir sur votre problème :
Il suffit de regarder le numéro de ligne de l'erreur, et de la corriger en utilisant les informations précédentes.
0 votes
Question connexe sur les IndentationErrors no causés par des espaces blancs mélangés : Je reçois une IndentationError. Comment puis-je le corriger ?