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


当前回答

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

1)全选,如Ctrl + A

2)进入Format -> Untabify Region

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

我使用的是Python 2.5.4

其他回答

这一行:result = result * i应该缩进(它是for循环的主体)。

或者-你混合了空格和制表符

对于Spyder用户goto 修复缩进 立即解决这个问题

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

gg=G

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

例如:

1. def convert_distance(miles):
2.   km = miles * 1.6
3.   return km

在这段代码中,我遇到了同样的情况。只需要删除之前的缩进空格 第2行和第3行,然后使用制表符或空格。不要两者都用。在python中编写代码时,给予适当的缩进。 对于Spyder去源代码>修复缩进。同样适用于VC代码和sublime文本或任何其他编辑器。固定缩进。

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