当我编译下面的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?
当前回答
我得到了类似的错误如下:
IndentationError:期望一个缩进的块
当我忘记把pass传给下面的类或函数时,然后在类或函数之后编写其他代码,如下所示:
class Person:
# pass
x = 10
def test():
# pass
x = 10
并且,当其他代码没有在类或函数之后编写时,如下所示:
class Person:
# pass
# x = 10
def test():
# pass
# x = 10
我得到的错误如下:
SyntaxError:解析时意外的EOF
其他回答
我昨天也有同样的问题,这是缩进错误,正在使用崇高的文本编辑器。我花了几个小时来修复它,最后我把代码复制到VI文本编辑器中,它工作得很好。Ps python对空格太敏感,请确保不要混合空格和制表符。
每当我遇到这个错误时,都是因为我在编辑器中混淆了制表符和空格。
我得到这个错误,即使我没有任何制表符在我的代码,原因是有一个多余的右括号在我的代码的某处。我应该早点算出来的,因为它把等号前后的空格弄乱了……如果在IDE中运行Reformat code(或手动运行autopep8)后仍然发现任何错误,请确保所有括号都匹配,从第一个等号前后的奇怪空格开始。
首先,只是提醒你有一个逻辑错误,你最好保持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的经验,那么你就能理解为什么我们必须留下一行。
只是一个补充。我在notepad++中有一个类似的缩进问题。
Unexcepted缩进 外压痕水平 去---->搜索选项卡---->点击替换---->点击单选按钮扩展下面->现在用四个空格替换\t 去---->搜索选项卡---->点击替换---->点击单选按钮扩展下面->现在替换\n与无