当我编译下面的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的IDLE编辑器,你可以按照它在类似错误消息中建议的那样做:
1)全选,如Ctrl + A
2)进入Format -> Untabify Region
3)再次检查缩进是否正确,保存并重新运行程序。
我使用的是Python 2.5.4
其他回答
这是因为制表符和空格混淆了。 您可以删除所有空格并用制表符替换它们。
或者, 试着这样写:
#!/usr/bin/python -tt
在代码的开头。这一行解决了制表符和空格之间的任何差异。
我使用Jupyter笔记本电脑,尝试了上面几乎所有的解决方案(适应我的场景),但都没有用。然后我逐行删除每行的所有空格并用制表符替换。这就解决了问题。
为了方便地检查制表符/空格的问题,你可以这样做:
python -m tabnanny yourfile.py
当然,你也可以设置正确的编辑器:-)
首先,只是提醒你有一个逻辑错误,你最好保持result=1,否则即使在循环运行后,你的输出也将是result=0。
其次,你可以这样写:
import sys
def Factorial(n): # Return factorial
result = 0
for i in range (1,n):
result = result * i
print "factorial is ",result
return result
留下一行将告诉python shell FOR语句已经结束。如果你有使用python shell的经验,那么你就能理解为什么我们必须留下一行。
我在Ubuntu操作系统中使用Sublime文本。要修复此问题,请转到
>缩进->将缩进转换为制表符