757 votes

IndentationError: unindent ne correspond pas à l'extérieur niveau d'indentation

Quand je compile le code Python ci-dessous, j'obtiens

IndentationError: unindent ne correspond pas à l'extérieur niveau d'indentation


import sys

def Factorial(n): # Return factorial
    result = 0
    for i in range (1,n):
        result = result * i
    print "factorial is ",result
    return result

Pourquoi?

827voto

Kevin Tighe Points 5573

EDIT: d'Autres affiches sont probablement raison...il y a peut être des espaces mixtes avec vos onglets. Essayez de faire un rechercher / remplacer de remplacer tous les onglets avec un peu d'espaces.

Essayez ceci:

import sys

def Factorial(n): # return factorial
    result = 1
    for i in range (1,n):
        result = result * i
    print "factorial is ",result
    return result

print Factorial(10)

325voto

activatedGeek Points 106

Pour Sublime Text utilisateurs:

Ensemble Sublime Text pour utiliser les tabulations pour l'indentation: View --> Indentation --> Convert Indentation to Tabs

Décochez l' Indent Using Spaces option dans le même sous-menu ci-dessus. Cela permettra de résoudre immédiatement ce problème.

151voto

André Points 4833

Pour vérifier facilement pour des problèmes avec les tabulations et les espaces que vous pouvez réellement faire ceci:

python -m tabnanny yourfile.py

ou vous pouvez simplement mettre en place dans votre éditeur de texte correctement bien sûr :-)

48voto

zdan Points 11822

Êtes-vous sûr de ne pas mélanger les tabulations et des espaces dans votre indentation espace blanc? (Qui sera la cause de l'erreur.)

Remarque, il est recommandé de ne pas utiliser les onglets dans le code Python. Voir le guide de style. Vous devez configurer Notepad++ pour insérer des espaces pour les onglets.

28voto

Dana Points 9876

Chaque fois que j'ai rencontré cette erreur, c'est parce que j'ai quelque peu mélangé les tabulations et des espaces dans mon éditeur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X