IndentationError: unindent does not match any outer indentation level
When I compile the Python code below, I get
IndentationError: unindent does not match any outer indentation level
import sys
def Factorial(n): # Return factorial
result = 1
for i in range (1,n):
result = result * i
print "factorial is ",result
return result
Why?
Solution 1:
Other posters are probably correct...there might be spaces mixed in with your tabs. Try doing a search & replace to replace all tabs with a few spaces.
Try this:
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)
Solution 2:
IMPORTANT: Spaces are the preferred method - see PEP008 Indentation and Tabs or Spaces?. (Thanks to @Siha for this.)
For Sublime Text
users:
Set Sublime Text
to use tabs for indentation:
View
--> Indentation
--> Convert Indentation to Tabs
Uncheck the Indent Using Spaces
option as well in the same sub-menu above.
This will immediately resolve this issue.
Solution 3:
To easily check for problems with tabs/spaces you can actually do this:
python -m tabnanny yourfile.py
or you can just set up your editor correctly of course :-)
Solution 4:
Are you sure you are not mixing tabs and spaces in your indentation white space? (That will cause that error.)
Note, it is recommended that you don't use tabs in Python code. See the style guide. You should configure Notepad++ to insert spaces for tabs.
Solution 5:
Whenever I've encountered this error, it's because I've somehow mixed up tabs and spaces in my editor.