当我编译下面的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?


当前回答

因为我意识到没有特定于spyder的答案,我将添加一个: 基本上,仔细查看你的if语句,并确保所有if, elif和else都有相同的间距,即它们在开始时处于同一行,如下所述:

def your_choice(answer):
    if answer>5:
        print("You're overaged")
    elif answer<=5 and answer>1: 
            print("Welcome to the toddler's club!")
    else:
            print("No worries mate!")

其他回答

例如:

1. def convert_distance(miles):
2.   km = miles * 1.6
3.   return km

在这段代码中,我遇到了同样的情况。只需要删除之前的缩进空格 第2行和第3行,然后使用制表符或空格。不要两者都用。在python中编写代码时,给予适当的缩进。 对于Spyder去源代码>修复缩进。同样适用于VC代码和sublime文本或任何其他编辑器。固定缩进。

每当我遇到这个错误时,都是因为我在编辑器中混淆了制表符和空格。

我昨天也有同样的问题,这是缩进错误,正在使用崇高的文本编辑器。我花了几个小时来修复它,最后我把代码复制到VI文本编辑器中,它工作得很好。Ps python对空格太敏感,请确保不要混合空格和制表符。

这可能是因为上面的函数没有以同样的方式缩进。 即。

class a:
    def blah:
      print("Hello world")
    def blah1:
      print("Hello world")

另一种纠正缩进错误的方法是复制您的 代码到PyCharm(如果您已经配置了),并重新格式化文件 它将自动正确地缩进。