当我编译下面的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?
当前回答
看起来是压痕问题。你不必在Python中匹配花括号,但你必须匹配缩进级别。
防止空格/制表符问题的最好方法是在文本编辑器中显示不可见的字符。这将为您提供一种快速防止和/或解决缩进相关错误的方法。
此外,注入复制粘贴的代码是这类问题的常见来源。
其他回答
如果使用colab,则可以通过此命令避免错误。
< Ctrl-A > < Tab > < Shift-Tab >
它是所有的[制表符]缩进转换为[空格]缩进。然后点击OK。
为了方便地检查制表符/空格的问题,你可以这样做:
python -m tabnanny yourfile.py
当然,你也可以设置正确的编辑器:-)
其他的海报可能是正确的…可能会在制表符中混入空格。尝试用一些空格替换所有的制表符。
试试这个:
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)
我定义了一个函数,但它除了函数注释之外没有任何内容……
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
在任何情况下,确保清楚地说明为什么它是一个空函数——对于你自己,或者对于将使用你的代码的同事
我使用Jupyter笔记本电脑,尝试了上面几乎所有的解决方案(适应我的场景),但都没有用。然后我逐行删除每行的所有空格并用制表符替换。这就解决了问题。