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)
0
如果您使用Python的IDLE编辑器,您可以按照其中一条类似的错误消息进行操作:
1)选择所有,例如Ctrl A
2)转到格式 - > Untabify Region
3)仔细检查您的缩进是否仍然正确,保存并重新运行您的程序 .
我正在使用Python 2.5.4
197
行: result = result * i 应该缩进(它是for循环的主体) .
或者 - 您有混合空格和制表符
1
只是一个补充 . 我在记事本中的两个缩进都有类似的问题 .
未接受的缩进
外部缩进级别
转到---->搜索选项卡---->点击 replace ---->点击下面的单选按钮 Extended >现在用四个空格替换\ t
转到---->搜索选项卡---->点击 replace ---->点击下面的单选按钮 Extended --->现在替换为\ n
1
这可能是因为它上面的函数没有以相同的方式缩进 . 即
class a:
def blah:
print("Hello world")
def blah1:
print("Hello world")
在崇高中打开你的文件,右键单击空白区域选择anaconda点击autoformat DONE或按CTRL ALT R.
-3
由于我意识到 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!")
4
我定义了一个函数,但除了函数注释之外没有任何内容......
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
在任何情况下,请务必明确 why 这是一个空函数 - 对于您自己或您的同行将使用您的代码
120
即使我也遇到过同样的问题,后来我发现有一个编码问题 . 我建议你也改变你的编辑器 . 最好的python友好的IDE或编辑器是pycharm,sublime,vim for linux .
22 回答
如果您正在使用Vim,请单击“转义”然后键入
GG = G
这个自动缩进所有内容,并清除你抛出的任何空间 .
看起来是一个缩进问题 . 您不必在Python中匹配大括号,但您必须匹配缩进级别 .
防止空格/制表符问题的最佳方法是在文本编辑器中显示不可见的字符 . 这将为您提供一种快速方法来防止和/或解决与缩进相关的错误 .
此外,注入复制粘贴代码是此类问题的常见来源 .
如果使用记事本,请使用扩展搜索模式“替换”以查找\ t并替换为四个空格 .
在Atom
去
然后再次检查您的文件缩进:
要么
对于Atom用户来说,
Packages ->whitspace -> remove trailing whitespaces
这对我有用昨天我遇到了同样的问题,这是缩进错误,是使用了崇高的文本编辑器 . 花了我几个小时试图解决它,最后我最终将代码复制到VI文本编辑器,它只是工作正常 . ps python太空白敏感,请确保不要混合空格和制表符 .
IMPORTANT : Spaces are the preferred method - 参见PEP008 Indentation和Tabs or Spaces? . (感谢@Siha . )
对于
Sublime Text
用户:设置
Sublime Text
以使用标签进行缩进:View
- >Indentation
- >Convert Indentation to Tabs
在上面的同一子菜单中也取消选中
Indent Using Spaces
选项 . 这将立即解决此问题 .要轻松检查选项卡/空格的问题,您可以实际执行此操作:
或者你当然可以正确设置你的编辑器:-)
你确定你没有在缩进空白处混合标签和空格吗? (这会导致错误 . )
注意,建议您不要在Python代码中使用选项卡 . 见style guide . 您应该配置记事本以插入选项卡的空格 .
每当我遇到这个错误时,都是因为我在编辑器中混淆了制表符和空格 .
其他海报可能是正确的...可能有空格与您的标签混合 . 尝试执行搜索和替换以使用一些空格替换所有选项卡 .
试试这个:
如果您使用Python的IDLE编辑器,您可以按照其中一条类似的错误消息进行操作:
1)选择所有,例如Ctrl A
2)转到格式 - > Untabify Region
3)仔细检查您的缩进是否仍然正确,保存并重新运行您的程序 .
我正在使用Python 2.5.4
行:
result = result * i
应该缩进(它是for循环的主体) .或者 - 您有混合空格和制表符
只是一个补充 . 我在记事本中的两个缩进都有类似的问题 .
未接受的缩进
外部缩进级别
转到---->搜索选项卡---->点击 replace ---->点击下面的单选按钮 Extended >现在用四个空格替换\ t
转到---->搜索选项卡---->点击 replace ---->点击下面的单选按钮 Extended --->现在替换为\ n
这可能是因为它上面的函数没有以相同的方式缩进 . 即
这是因为标签和空格混合在一起 . 您可以删除所有空格并使用制表符替换它们 .
或者,试着写下这个:
在代码的开头 . 此行解决了制表符和空格之间的任何差异 .
就我而言,问题是Eclipse上的pydev配置
如果您使用Komodo编辑器,您可以在其中一条类似的错误消息中执行操作:
1)选择所有,例如Ctrl A
2)转到代码 - > Untabify Region
3)仔细检查您的缩进是否仍然正确,保存并重新运行您的程序 .
我正在使用Python 3.4.2
如果您使用Sublime文本进行python开发,可以使用Anaconda软件包避免错误 . 安装Anaconda后,
由于我意识到
spyder
没有特定的答案,我将添加一个:基本上,仔细查看你的if
语句并确保所有if
,elif
和else
具有相同的间距,就像它们在开始时在同一行中一样所以:我定义了一个函数,但除了函数注释之外没有任何内容......
它喊道:
(注意
^
标记指向的行是空的)多种解决方案
1:只需注释掉该功能
2:添加功能评论
3:添加无效的行
在任何情况下,请务必明确 why 这是一个空函数 - 对于您自己或您的同行将使用您的代码
即使我也遇到过同样的问题,后来我发现有一个编码问题 . 我建议你也改变你的编辑器 . 最好的python友好的IDE或编辑器是pycharm,sublime,vim for linux .