python else和elif错误

时间:2013-06-20 20:46:20

标签: python if-statement

>>> 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语句放在下一行,它也会给我语法错误。这是为什么?

3 个答案:

答案 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'