簡體   English   中英

Python縮進問題?

[英]Python indentation issue?

我對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"

所有那些只包含注釋的方法。

例如,要解決此問題,請執行此操作

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

注釋不算作可編譯語句,所以你有一堆空塊。 這就是為什么它會給你縮進錯誤。

如果你使用的結果是:期望一個縮進的塊而你沒有任何想要放在那里的東西(除了注釋),那么你需要使用pass

例如

def doNothing(self):
    pass

當您只是概述您的類並且有一堆無法執行任何操作的方法時,您需要插入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正在尋找一個遵循方法定義的縮進語句。

更改:

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

至:

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

等等所有方法。

除非你縮寫這篇文章的代碼,否則你需要在沒有任何代碼的所有函數之后進行pass

def __init__(self):
    #stuff.

乍一看看起來不對勁。 嘗試將其更改為:

def __init__(self):
    #stuff.
    pass

仔細檢查所有代碼中的選項卡和空格,確保沒有混合它們。 具有多個空格的行可以與具有單個標簽的行相同。

其他人已經介紹了pass ,所以我只想補充一點,對於初學python程序員來說,它可能需要一些人習慣空白的重要性。

在您習慣它之前,您可能希望在保存文件時養成將制表符轉換為空格或空格到制表符的習慣。 就個人而言,我更喜歡制表符,因為它更容易區分它是否被一個(特別是在嵌套塊的開頭/結尾)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM