当我编译下面的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?


当前回答

如果你使用notepad++,用扩展搜索模式做一个“替换”来找到\t并替换为四个空格。

其他回答

我使用Jupyter笔记本电脑,尝试了上面几乎所有的解决方案(适应我的场景),但都没有用。然后我逐行删除每行的所有空格并用制表符替换。这就解决了问题。

如果你使用Python的IDLE编辑器,你可以按照它在类似错误消息中建议的那样做:

1)全选,如Ctrl + A

2)进入Format -> Untabify Region

3)再次检查缩进是否正确,保存并重新运行程序。

我使用的是Python 2.5.4

使用Visual studio代码

如果你使用vs code than,它将使用下面的简单步骤将所有混合缩进转换为空格或制表符。

按Ctrl + Shift + p 使用空格输入缩进 按回车键

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

IndentationError:期望一个缩进的块

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

class Person:
    # pass

x = 10
def test():
    # pass

x = 10

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

class Person:
    # pass

# x = 10
def test():
    # pass

# x = 10

我得到的错误如下:

SyntaxError:解析时意外的EOF

我犯了同样的错误,因为另一件事,不是关于制表符和空格。我有第一个比其他的稍微多一点缩进:更深入。如果它只是一两个空间,你可能会在一个很长的代码块之后检查它。文档字符串也是一样:

"""comment comment 
comment
"""

它们还需要对齐,请参阅同一页上的另一个答案。

可复制的几行:

if a==1:
    print('test')
 else:
    print('test2')

抛出:

  File "<ipython-input-127-52bbac35ad7d>", line 3
    else:
         ^
IndentationError: unindent does not match any outer indentation level