当我编译下面的Python代码时,我得到

IndentationError: unindent不匹配任何外部缩进级别


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?


当前回答

在原子

Packages > Whitespace > Convert Spaces to Tabs

然后再次检查文件缩进:

python -m tabnanny yourFile.py

or

>python
>>> help("yourFile.py")

其他回答

重要的是: 空格是首选方法-请参阅PEP 8缩进和制表符或空格?(感谢@Siha。)

Sublime Text用户:

设置Sublime Text使用制表符缩进: 将缩进转换为制表符

在上面的同一子菜单中取消使用空格缩进选项。 这将立即解决这个问题。

其他的海报可能是正确的…可能会在制表符中混入空格。尝试用一些空格替换所有的制表符。

试试这个:

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)

我得到了类似的错误如下:

IndentationError:期望一个缩进的块

当我忘记把pass传给下面的类或函数时,然后在类或函数之后编写其他代码,如下所示:

class Person:
    # pass

x = 10
def test():
    # pass

x = 10

并且,当其他代码没有在类或函数之后编写时,如下所示:

class Person:
    # pass

# x = 10
def test():
    # pass

# x = 10

我得到的错误如下:

SyntaxError:解析时意外的EOF

我得到这个错误,即使我没有任何制表符在我的代码,原因是有一个多余的右括号在我的代码的某处。我应该早点算出来的,因为它把等号前后的空格弄乱了……如果在IDE中运行Reformat code(或手动运行autopep8)后仍然发现任何错误,请确保所有括号都匹配,从第一个等号前后的奇怪空格开始。

如果你正在使用Vim,点击escape,然后输入

gg=G

这将自动缩进所有内容,并将清除您所扔进去的任何空间。