当我编译下面的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代码时,我得到
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?
当前回答
我定义了一个函数,但它除了函数注释之外没有任何内容……
def foo(bar):
# Some awesome temporary comment.
# But there is actually nothing in the function!
# D'Oh!
它喊道:
File "foobar.py", line 69
^
IndentationError: expected an indented block
(注意^标记所指向的行是空的)
--
多个解决方案:
1:只注释掉函数
2:添加函数注释
def foo(bar):
'' Some awesome comment. This comment could be just one space.''
3:添加不做任何事情的行
def foo(bar):
0
在任何情况下,确保清楚地说明为什么它是一个空函数——对于你自己,或者对于将使用你的代码的同事
其他回答
如果你使用notepad++,用扩展搜索模式做一个“替换”来找到\t并替换为四个空格。
如果你使用Python的IDLE编辑器,你可以按照它在类似错误消息中建议的那样做:
1)全选,如Ctrl + A
2)进入Format -> Untabify Region
3)再次检查缩进是否正确,保存并重新运行程序。
我使用的是Python 2.5.4
在原子
去
Packages > Whitespace > Convert Spaces to Tabs
然后再次检查文件缩进:
python -m tabnanny yourFile.py
or
>python
>>> help("yourFile.py")
看起来是压痕问题。你不必在Python中匹配花括号,但你必须匹配缩进级别。
防止空格/制表符问题的最好方法是在文本编辑器中显示不可见的字符。这将为您提供一种快速防止和/或解决缩进相关错误的方法。
此外,注入复制粘贴的代码是这类问题的常见来源。
其他的海报可能是正确的…可能会在制表符中混入空格。尝试用一些空格替换所有的制表符。
试试这个:
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)