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


当前回答

为了它的价值,我的文档字符串缩进太多,这也抛出相同的错误

class junk: 
     """docstring is indented too much""" 
    def fun(): return   

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

print Factorial(10)

这是因为制表符和空格混淆了。 您可以删除所有空格并用制表符替换它们。

或者, 试着这样写:

#!/usr/bin/python -tt

在代码的开头。这一行解决了制表符和空格之间的任何差异。

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

IndentationError:期望一个缩进的块

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

class Person:
    # pass

x = 10
def test():
    # pass

x = 10

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

class Person:
    # pass

# x = 10
def test():
    # pass

# x = 10

我得到的错误如下:

SyntaxError:解析时意外的EOF

您确定在缩进空白中没有混合制表符和空格吗?(这会导致错误。)

注意,建议不要在Python代码中使用制表符。请参阅样式指南。您应该配置notepad++为制表符插入空格。

只是一个补充。我在notepad++中有一个类似的缩进问题。

Unexcepted缩进 外压痕水平 去---->搜索选项卡---->点击替换---->点击单选按钮扩展下面->现在用四个空格替换\t 去---->搜索选项卡---->点击替换---->点击单选按钮扩展下面->现在替换\n与无