Проблема с отступом 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 Solutions collect form web for “Проблема с отступом Python?”

Все эти методы состоят только из комментариев.

Чтобы исправить это, например, сделайте это

 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 может немного привыкнуть к важности пробелов.

До тех пор, пока вы не привыкнете к нему, вы можете привыкнуть конвертировать вкладки в пробелы или пробелы на вкладки при сохранении файла. Лично я предпочитаю вкладки, потому что легче сказать разницу, если она отключена на один (особенно в начале / конце вложенного блока).

  • parent-> дочерние отношения в appengine python (bigtable)
  • передача переменных в шаблон при перенаправлении в python
  • Python: импортировать скрипт в режиме ожидания
  • В разнице Python в __dict__ между объектом () и классом myClass (объект)
  • string.split (text) или text.split () В чем разница?
  • нахождение max в python в соответствии с определенным пользовательским критерием
  • Проверка правильности номера ISBN
  • Импорт модулей Python из разных рабочих каталогов
  • Python - лучший язык программирования в мире.