IndentationError:unindent不匹配任何外部缩进级别
当我编译下面的Python代码时,我得到了
IndentationError:unindent不匹配任何外部缩进级别
import sys def Factorial(n): # Return factorial result = 0 for i in range (1,n): result = result * i print "factorial is ",result return result
为什么?
其他海报可能是正确的…可能有空间与您的标签混合。 尝试做一个search和replace,用几个空格replace所有的标签。
尝试这个:
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)
重要提示 : 空格是首选方法 – 请参阅PEP008 缩进和制表符或空格? 。 (感谢@Siha为此。)
对于Sublime Text
用户:
将Sublime Text
设置为使用制表符缩进: View
– > Indentation
– > Convert Indentation to Tabs
在上面的同一子菜单中,取消选中Indent Using Spaces
选项。 这将立即解决这个问题。
要轻松检查标签/空格的问题,你可以这样做:
python -m tabnanny yourfile.py
或者你可以正确设置你的编辑器当然:-)
你确定你没有在缩进空格中混合制表符和空格吗? (这将导致该错误。)
请注意,build议您不要在Python代码中使用制表符。 请参阅风格指南 。 您应该configurationNotepad ++为制表符插入空格。
每当我遇到这个错误,这是因为我在编辑器中混淆了制表符和空格。
如果您使用Python的IDLE编辑器,您可以按照类似的错误消息中的build议进行操作:
1)全选,例如Ctrl + A
2)转到格式 – >解除区域
3)仔细检查你的缩进是否正确,保存并重新运行你的程序。
我正在使用Python 2.5.4
该行: result = result * i
应该缩进(这是for循环的主体)。
或者 – 你有混合的空格和制表符
看起来是一个缩进问题。 您不必在Python中匹配大括号,但是您必须匹配缩进级别。
防止空格/制表符问题的最好方法是在文本编辑器中显示不可见的字符。 这将为您提供一种快速预防和/或解决与缩进相关的错误的方法。
此外,注入复制粘贴代码是这类问题的常见来源。
如果您使用记事本++,请用扩展search模式进行“replace”以find\ t并用四个空格replace。
在primefaces
去
Packages > Whitespace > Convert Spaces to Tabs
然后再次检查您的文件缩进:
python -m tabnanny yourFile.py
要么
>python >>> help("yourFile.py")
如果你正在使用Vim,点击escape,然后input
GG = G
这自动缩进的一切,并会清除你所投入的任何空间。
我昨天有同样的问题,这是缩进错误,是使用崇高的文本编辑器。 花了我的时间试图解决它,最后我最终将代码复制到VI文本编辑器,它只是工作正常。 ps python太空白,请确保不要混合空格和制表符。
为Atom用户, Packages ->whitspace -> remove trailing whitespaces
这为我工作
只是一个补充。 Notepad ++中的这两个缩进都有类似的问题。
- 未收到的缩进
-
外部缩进级别
进入—->search标签—->点击replace —->点击下方的单选button扩展 —>现在用四个空格replace\ t
进入—->search标签—->点击replace —->点击下方的单选button扩展 —>现在用\ nreplace\ n
这可能是因为上面的函数没有以相同的方式缩进。 即
class a: def blah: print("Hello world") def blah1: print("Hello world")
这是因为混合了标签和空格。 您可以删除所有的空格,并用制表符replace它们。
或者,试着写这个:
#!/usr/bin/python -tt
在代码的开头。 此行可解决制表符和空格之间的差异。
在我的情况下,问题是Eclipse上pydev的configuration
如果您使用Komodo编辑器,您可以按照类似的错误消息中的build议进行操作:
1)全选,例如Ctrl + A
2)进入Code – > Untabify Region
3)仔细检查你的缩进是否正确,保存并重新运行你的程序。
我正在使用Python 3.4.2
如果你使用的是用于python开发的Sublime文本,你可以使用Anaconda包来避免这个错误。安装Anaconda之后,
- 打开你的文件崇高
- 右键点击空地
- select水蟒
- 点击autoformat
- 完成或按CTRL + ALT + R。
在pep8后build立你的编辑器后,你仍然有问题。 解决这个问题的好方法是用一个选项卡replace四个空格。 实际上python不支持4个空格代替1个选项卡。