Python缩进问题?

时间:2010-01-26 22:48:49

标签: python

我对python很新。这是我第一次使用python中的类。当我尝试运行此脚本时,我得到了

  

IndentationError:预期缩进   块

这有什么问题?

import random

class Individual:
    alleles = (0,1)
    length = 5
    string = ""

    def __init__(self):
        #some constructor work, here.

    def evaluate(self):
        #some stuff here.

    def mutate(self, gene):
        #mutate the given gene.

    def onePointCrossover(self, partner):
        #at some random point, crossover.

    def twoPointCrossover(self, partner):
        #at two random(?) points, crossover.

class World:
    def __init__(self):
        #stuff.

    def buildPopulation(self):
        #stuff.
        for individual in self.population():
            for i in range(0, individual.length):
                print random.random()


    def display(self):
        #print some output stuff.

if __name__ == '__main__':
    print "hi there"

8 个答案:

答案 0 :(得分:11)

所有这些只包含评论的方法。

要修复它,例如,请执行此操作

def twoPointCrossover(self, partner):
        #at two random(?) points, crossover.
        pass

注释不算作可编译语句,所以你有一堆空块。这就是为什么它会给你缩进错误。

答案 1 :(得分:4)

如果你使用以:结尾的东西,期望一个缩进的块,而你没有任何想要放在那里的东西(除了评论),那么你需要使用pass。< / p>

E.g。

def doNothing(self):
    pass

答案 2 :(得分:3)

如果您只是概述了类并且有一堆无法执行任何操作的方法,则需要插入pass语句以指示没有发生任何事情。

像这样:

class Individual:
    alleles = (0,1)
    length = 5
    string = ""

    def __init__(self):
        #some constructor work, here.
        pass

    def evaluate(self):
        #some stuff here.
        pass
    ...

意外的缩进消息是因为python正在寻找一个遵循方法定义的缩进语句。

答案 3 :(得分:2)

变化:

class World:
    def __init__(self):
       #stuff.

要:

class World:
    def __init__(self):
        #stuff
        pass

依此类推所有方法。

答案 4 :(得分:2)

除非您缩写此帖子的代码,否则在所有没有任何代码的功能之后,您需要pass

答案 5 :(得分:2)

def __init__(self):
    #stuff.
乍一看看起来不对劲。尝试将其更改为:

def __init__(self):
    #stuff.
    pass

答案 6 :(得分:2)

仔细检查所有代码中的标签和空格,确保没有混合它们。具有多个空格的行可能与具有单个制表符的行相同。

答案 7 :(得分:0)

其他人已经介绍过pass,所以我只想补充一点,对于初学python程序员来说,可能需要一些时间来适应空白的重要性。

在您习惯它之前,您可能希望在保存文件时养成将制表符转换为空格或空格到制表符的习惯。就个人而言,我更喜欢标签,因为它更容易区分它是否一个(特别是在嵌套块的开头/结尾)。