>>> if 5==5:
print '5'
else: print 'cat'
File "<pyshell#2>", line 3
else: print 'cat'
^
IndentationError: unindent does not match any outer indentation level
无论缩进是什么,它仍然无效。即使我尝试将print cat
语句放在下一行,它也会给我语法错误。这是为什么?
答案 0 :(得分:4)
您希望代码看起来像这样:
if 5 == 5:
print '5'
else:
print 'cat'
为什么呢?因为Python使用缩进像其他语言一样使用括号:它确定语句的分组。 Dive Into Python对其工作原理有一个很好的解释:
Python使用回车符分隔语句,使用冒号和缩进来分隔代码块。 C ++和Java使用分号将语句和花括号分开来分隔代码块。
reference manual还描述了它在较低级别的工作原理:
逻辑行开头的前导空格(空格和制表符)用于计算行的缩进级别,而后者又用于确定语句的分组。
...
首先,标签被替换(从左到右)一到八个空格,使得直到并包括替换的字符总数是八的倍数(这与Unix使用的规则相同) )。然后,第一个非空白字符前面的空格总数确定行的缩进。
在风格上,您希望使用4个空格来表示缩进级别。这在PEP 8中定义。这将确保每个人都看到相同的东西,无论他们使用什么IDE。请注意,您应该永远不要混合标签和空格,因为它很容易在不知情的情况下破坏代码(考虑不是所有编辑器都显示相同大小的标签)。
答案 1 :(得分:3)
在python中使用适当的缩进,否则你会得到这样的错误。
使用4个空格进行缩进。
if 5 == 5:
print '5'
else:
print 'cat'
来自docs:
在逻辑开头引出空格(空格和制表符) line用于计算行的缩进级别 turn用于确定语句的分组。
答案 2 :(得分:1)
不知道你的代码会做什么,但请注意,不可能在那里打印'cat'。因此,else
语句完全没用。为什么? 5==5
条件始终生成True
,因此无论如何,始终会打印'5'
。