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

4

3 回答 3

4

您希望您的代码如下所示:

if 5 == 5:
    print '5'
else:
    print 'cat'

为什么?因为 Python 使用缩进,就像其他语言使用括号一样:它决定了语句的分组。Dive Into Python很好地解释了它的工作原理:

Python 使用回车符分隔语句,使用冒号和缩进分隔代码块。C++ 和 Java 使用分号分隔语句,使用花括号分隔代码块。

参考手册还描述了它是如何在较低级别工作的:

逻辑行开头的前导空格(空格和制表符)用于计算行的缩进级别,而缩进级别又用于确定语句的分组。

...

首先,将制表符替换为(从左到右)一到八个空格,这样直到并包括替换的字符总数是八的倍数(这与 Unix 使用的规则相同)。第一个非空白字符之前的空格总数决定了行的缩进。

从风格上讲,您希望使用 4 个空格来表示缩进级别。这是在PEP 8中定义的。这将确保每个人看到相同的东西,无论他们使用什么 IDE。请注意,您不应该混合制表符和空格,因为很容易在不经意间破坏代码(考虑到并非所有编辑器都将制表符显示为相同大小)。

于 2013-06-20T20:49:00.657 回答
3

在 python 中使用适当的缩进,否则你会得到这样的错误。

使用 4 个空格进行缩进。

if 5 == 5:
    print '5'
else:
    print 'cat'

来自文档

逻辑行开头的前导空格(空格和制表符)用于计算行的缩进级别,而缩进级别又用于确定语句的分组。

于 2013-06-20T20:48:54.783 回答
1

不知道您的代码将要做什么,但请注意,不可能在那里打印“猫”。因此,该else声明完全没有用。为什么?5==5条件总是产生,True所以无论如何,'5'总是打印。

于 2013-06-20T20:57:47.220 回答