0

我是 python 新手,我在这里做练习(http://www.learnpython.org/page/Loops)。对于以下代码:

   numbers = [
        951, 402, 984, 651, 360, 69, 408, 319, 601, 485, 980, 507, 725, 547, 544, 
        615, 83, 165, 141, 501, 263, 617, 865, 575, 219, 390, 984, 592, 236, 105, 942, 941, 
        386, 462, 47, 418, 907, 344, 236, 375, 823, 566, 597, 978, 328, 615, 953, 345, 
        399, 162, 758, 219, 918, 237, 412, 566, 826, 248, 866, 950, 626, 949, 687, 217, 
        815, 67, 104, 58, 512, 24, 892, 894, 767, 553, 81, 379, 843, 831, 445, 742, 717, 
        958, 609, 842, 451, 688, 753, 854, 685, 93, 857, 440, 380, 126, 721, 328, 753, 470, 
        743, 527
    ]

    # your code goes here
    for number in numbers:
        if number <= 237 and number%2 == 0:
            print number

我遇到了以下问题:

Traceback (most recent call last):
  File "/base/data/home/apps/s~learnpythonjail/2.365841894475711898/main.py", line 75, in execute_python
    exec(code, {})
  File "<string>", line 14
    print number
        ^
IndentationError: expected an indented block

我可以知道如何解决吗?

4

3 回答 3

5

错误意味着print缩进没有超出前if一行的级别。

如果在您的编辑器中,看起来该print行无论如何都正确缩进,那么您正在不一致地混合制表符和空格。用空格替换所有制表符以进行更正。

您可以将大多数编辑器配置为仅使用空格进行缩进;这是Python 样式指南 (PEP 8)的建议:

制表符还是空格?

切勿混合制表符和空格。

Python 最流行的缩进方式是仅使用空格。第二种最流行的方式是仅使用选项卡。使用制表符和空格混合缩进的代码应转换为仅使用空格。当使用 -t 选项调用 Python 命令行解释器时,它会发出有关非法混合制表符和空格的代码的警告。使用 -tt 时,这些警告会变成错误。强烈推荐这些选项!

对于新项目,强烈建议仅使用空格而不是选项卡。大多数编辑器都具有使此操作变得容易的功能。

于 2013-03-27T16:19:51.790 回答
2

以下是您的代码在显示所有带有制表符的空白字符的编辑器中的样子(制表符大小设置为 4):

在此处输入图像描述

小圆点是空格字符,箭头是制表符。正如其他答案中所述,混合制表符和空格是一个坏主意。上面的代码可能看起来没问题,但看看如果将制表符大小更改为 8 个字符会发生什么:

在此处输入图像描述

这是您看到的错误的根本原因。当您混合制表符和空格时,您在编辑器中看到的缩进可能与 Python 解释器看到的缩进不同。

于 2013-03-27T16:30:48.310 回答
1

我已经重现了您的情况: if 语句之前的一个表,打印之前的 8 个空格。请仅使用空格代替。

于 2013-03-27T16:21:06.547 回答