Как сделать отступ в python
Перейти к содержимому

Как сделать отступ в python

  • автор:

Как сделать отступ первой строки при помощи python из текстового файла в docx в каждом абзаце?

Отступ первой строки

Есть текст для примера (text.txt):

Существуют две основные трактовки понятия «текст»: имманентная (расширенная, философски нагруженная) и репрезентативная (более частная). Имманентный подход подразумевает отношение к тексту как к автономной реальности, нацеленность на выявление его внутренней структуры. Репрезентативный — рассмотрение текста как особой формы представления информации о внешней тексту действительности. В лингвистике термин «текст» используется в широком значении, включая и образцы устной речи. Восприятие текста изучается в рамках лингвистики текста и психолингвистики. Так, например, И. Р. Гальперин определяет текст следующим образом: «Это письменное сообщение, объективированное в виде письменного документа, состоящее из ряда высказываний, объединённых разными типами лексической, грамматической и логической связи, имеющее определённый модальный характер, прагматическую установку и соответственно литературно обработанное».

У меня получилось только сделать отступ первого абзаца.

from docx import Document from docx.shared import Pt, RGBColor from docx.enum.text import WD_UNDERLINE from docx.enum.text import WD_ALIGN_PARAGRAPH from docx.enum.section import WD_SECTION, WD_ORIENT from docx.shared import Mm # создание документа doc = Document() section = doc.sections[0] section.page_height = Mm(297) section.page_width = Mm(210) section.left_margin = Mm(23.5) section.right_margin = Mm(23.5) section.top_margin = Mm(20) section.bottom_margin = Mm(20) section.header_distance = Mm(0) section.footer_distance = Mm(0) # задаем стиль текста по умолчанию style = doc.styles['Normal'] style.font.name = 'Times New Roman' style.font.size = Pt(14) # Text my_file = open('text.txt', 'r') data = my_file.read() # Добавляем абзац p = doc.add_paragraph(data) # выравниваем абзац по ширине p.alignment = WD_ALIGN_PARAGRAPH.JUSTIFY # получаем объект форматирования fmt = p.paragraph_format # Форматируем: # отступ слева в мм fmt.first_line_indent = Mm(15) # отступ сверху в мм fmt.space_before = Mm(20) # отступ снизу в мм fmt.space_after = Mm(10) doc.save('test.docx') 

Отступы

Расстояние должно быть равномерным и равномерным. Неправильное отступа может вызвать IndentationError или вызвать программу , чтобы сделать что — то неожиданное. Следующий пример поднимает IndentationError :

 a = 7 if a > 5: print "foo" else: print "bar" print "done" 

Или , если строка после двоеточия не отступ, IndentationError также будет поднят:

 if True: print "true" 

Если добавить отступы , где она не принадлежит, IndentationError будут повышены:

 if True: a = 6 b = 5 

Если вы забудете сделать отступ, функциональность может быть потеряна. В этом примере None не возвращается вместо ожидаемого False :

 def isEven(a): if a%2 ==0: return True #this next line should be even with the if return False print isEven(7) 

Простой пример

Для Python Гвидо ван Россум основал группировку утверждений на отступе. Причины этого объясняются в первом разделе «Дизайн и история Python FAQ».Колоны, : , используется , чтобы объявить отступ блок кода , например, в следующем примере:

 class ExampleClass: #Every function belonging to a class must be indented equally def __init__(self): name = "example" def someFunction(self, a): #Notice everything belonging to a function must be indented if a > 5: return True else: return False #If a function is not indented to the same level it will not be considers as part of the parent class def separateFunction(b): for i in b: #Loops are also indented and nested conditions start a new indentation if i == 1: return True return False separateFunction([2,3,5,6,1]) 

Пробелы или табуляции?

Рекомендованный отступ состоит из 4 пробелов , но вкладки или пробелы могут быть использованы до тех пор , как они согласуются. Не следует смешивать вкладки и пробелы в Python , так как это вызовет ошибку в Python 3 и может приводит к ошибкам в Python 2 .

Как анализируется отступ

Пробелы обрабатываются лексическим анализатором перед анализом.

Лексический анализатор использует стек для хранения уровней отступов. В начале, стек содержит только значение 0, которое является самой левой позицией. Всякий раз, когда начинается вложенный блок, новый уровень отступа помещается в стек, и токен INDENT вставляется в поток токенов, который передается анализатору. Там никогда не может быть больше , чем один «INDENT» маркер в строке ( IndentationError ).

Когда строка встречается с меньшим уровнем отступа, значения выталкиваются из стека до тех пор, пока значение не окажется сверху, равным новому уровню отступа (если ничего не найдено, возникает синтаксическая ошибка). Для каждого извлеченного значения генерируется токен DEDENT. Очевидно, что может быть несколько жетонов «DEDENT» подряд.

Лексический анализатор пропускает пустые строки (те, которые содержат только пробелы и, возможно, комментарии) и никогда не будет генерировать для них токены «INDENT» или «DEDENT».

В конце исходного кода токены «DEDENT» генерируются для каждого уровня отступа, оставленного в стеке, до тех пор, пока не останется только 0.

 if foo: if bar: x = 42 else: print foo 
    [0]    [0, 4]    [0, 4, 8]    [0]   [0, 2]

Синтаксический анализатор обрабатывает токены «INDENT» и «DEDENT» как разделители блоков.

Правила оформления Python-кода

Рекомендуется использовать 4 пробела на каждый уровень отступа. Python 3 запрещает смешивание табуляции и пробелов в отступах. Код, в котором используются и те, и другие типы отступов, должен быть исправлен так, чтобы отступы в нем были расставлены только с помощью пробелов.

 def no_tab_using(): no_tab = 'Using 4 spaces' 
 def use_tab(): one_tab_using = 'Ugly' 

2. Точки с запятой

Не разделяйте ваши строки с помощью точек с запятой и не используйте точки с запятой для разделения команд, находящихся на одной строке.

 a = 'String' b = 15 c = 7.2 
 a = 'String'; b = 15; c = 7.2; 

3. Скобки

Используйте скобки экономно. Не используйте их с выражением return или с условной конструкцией, если не требуется организовать перенос строки. Однако скобки хорошо использовать для создания кортежей.

 if budget < 0: return False # ------------------- while counter  
 if (budget < 0): return (False) # ------------------- if not(line): continue # ------------------- return (result) 

4. Пробелы в выражениях и инструкциях

4.1 Пробелы и скобки

4.1.1 Не ставьте пробелы внутри каких-либо скобок (обычных, фигурных и квадратных).

 pineapple(pine[1], ) 
 pineapple( pine[ 1 ], < apple: 2 >) 

4.1.2 Никаких пробелов перед открывающей скобкой, которая начинает список аргументов, индекс или срез.

 get_number_of_guests(1) 
 get_number_of_guests (1) 
 dish['ingredients'] = cook_book[:3] 
 dish ['ingredients'] = cook_book [:3] 

4.2 Пробелы рядом с запятой, точкой с запятой и точкой

4.2.1 Перед запятой, точкой с запятой либо точкой не должно быть никаких пробелов. Используйте пробел после запятой, точки с запятой или точки (кроме того случая, когда они находятся в конце строки).

 if number_of_goods == 4: print(number_of_goods, total_price) 
 if number_of_goods == 4 : print(number_of_goods , total_price) 

4.3 Пробелы вокруг бинарных операторов

4.3.1 Окружайте бинарные операторы одиночными пробелами с каждой стороны. Это касается присваивания ( = ), операторов сравнения ( == , , > , != , <> , , >= , in , not in , is , is not ), и булевых операторов ( and , or , not ). Используйте, как вам покажется правильным, окружение пробелами по отношению к арифметическим операторам, но расстановка пробелов по обеим сторонам бинарного оператора придает целостность коду.

 counter == 1 
 counter  

4.3.2 Не используйте более одного пробела вокруг оператора присваивания (или любого другого оператора) для того, чтобы выровнять его с другим.

 price = 1000 price_with_taxes = 1200 price_with_taxes_and_discounts = 1100 
 price = 1000 price_with_taxes = 1200 price_with_taxes_and_discounts = 1100 

4.3.3 Не используйте пробелы по сторонам знака = , когда вы используете его, чтобы указать на именованный аргумент или значение по умолчанию.

 def complex(real, imag=0.0): return magic(r=real, i=imag) 
 def complex(real, imag = 0.0): return magic(r = real, i = imag) 

5. Длина строк

Ограничивайте длину строк 79 символами (а длину строк документации и комментариев — 72 символами). В общем случае не используйте обратный слеш в качестве перехода на новую строку. Используйте доступное в Python явное объединение строк посредством круглых и фигурных скобок. Если необходимо, можно добавить дополнительную пару скобок вокруг выражения.

 style_object(self, width, height, color='black', design=None, emphasis=None, highlight=0) if (width == 0 and height == 0 and color == 'red' and emphasis == 'strong'): 

Если ваш текст не помещается в одну строку, используйте скобки для явного объединения строк.

 long_string = ('This will build a very long long ' 'long long long long long long string') 

Что касается длинных URL в комментариях, то располагайте их, если это необходимо, на одной строке.

 # See details at # http://www.example.com/example/example/example/example/example/example/example_example.html 
 # See details at # http://www.example.com/example/example/example/example/example/\ # example/example_example.html 

Обратный слеш иногда используется. Например, с длинной конструкцией with для переноса блока инструкций.

 with open('/path/to/some/file/you/want/to/read') as file_1, \ open('/path/to/some/file/being/written', 'w') as file_2: file_2.write(file_1.read()) 

Ещё один подобный случай — длинные assert .

6. Пустые строки

Отделяйте функции (верхнего уровня, не функции внутри функций) и определения классов двумя пустыми строками. Определения методов внутри класса отделяйте одной пустой строкой. Две пустые строки должны быть между объявлениями верхнего уровня, будь это класс или функция. Одна пустая строка должна быть между определениями методов и между объявлением класса и его первым методом.

 import os . . class MyClass: . def __init__(self): self.name = 'My name' . def f(self): return 'hello world' . . def MyFunc(): i = 12345 return i . myclass = MyClass() 

Используйте (без энтузиазма) пустые строки в коде функций, чтобы отделить друг от друга логические части.

Python расценивает символ control+L как незначащий (whitespace), и вы можете использовать его, потому что многие редакторы обрабатывают его как разрыв страницы — таким образом, логические части в файле будут на разных страницах. Однако не все редакторы распознают control+L и могут на его месте отображать другой символ.

7. Имена

Имена, которых следует избегать:

    Односимвольные имена, исключая счетчики либо итераторы. Никогда не используйте символы l (маленькая латинская буква «эль»), O (заглавная латинская буква «о») или I (заглавная латинская буква «ай») как однобуквенные идентификаторы. В некоторых шрифтах эти символы неотличимы от цифры один и нуля. Если очень нужно l , пишите вместо неё заглавную L . Хорошо

 long_name = 'Хорошее имя переменной' L = 'Допустимо, но лучше избегать' 
 l = 1 I = 1 O = 0 
 import my_module 
 import my-module 
 my_variable = 'Variable' 
 __myvariable__ = 'Variable' 

7.1 Имена функций

Имена функций должны состоять из маленьких букв, а слова разделяться символами подчеркивания — это необходимо, чтобы увеличить читабельность.

 my_variable = 'Variable' 
 My-Variable = 'Variable' 

Стиль mixedCase допускается в тех местах, где уже преобладает такой стиль — для сохранения обратной совместимости.

7.2 Имена модулей и пакетов

Модули должны иметь короткие имена, состоящие из маленьких букв. Можно использовать символы подчёркивания, если это улучшает читабельность. То же самое относится и к именам пакетов, однако в именах пакетов не рекомендуется использовать символ подчёркивания.

Так как имена модулей отображаются в имена файлов, а некоторые файловые системы являются нечувствительными к регистру символов и обрезают длинные имена, очень важно использовать достаточно короткие имена модулей — это не проблема в Unix, но, возможно, код окажется непереносимым в старые версии Windows, Mac, или DOS.

 import vkapi 
 import My-First-VKontakte-API-Modul 

7.3 Имена классов

Все имена классов должны следовать соглашению CapWords почти без исключений.

 class MyFirstClass: 

Иногда вместо этого могут использоваться соглашения для именования функций, если интерфейс документирован и используется в основном как функции.

Обратите внимание, что существуют отдельных соглашения о встроенных именах: большинство встроенных имен — одно слово (либо два слитно написанных слова), а соглашение CapWords используется только для именования исключений и встроенных констант.

Так как исключения являются классами, к исключениями применяется стиль именования классов. Однако вы можете добавить Error в конце имени (если, конечно, исключение действительно является ошибкой).

7.4 Имена констант

Константы обычно объявляются на уровне модуля и записываются только заглавными буквами, а слова разделяются символами подчеркивания.

 MAX_OVERFLOW = 10 TOTAL = 100 

8. Комментарии

Комментарии, противоречащие коду, хуже, чем отсутствие комментариев. Всегда исправляйте комментарии, если меняете код!

Комментарии должны быть законченными предложениями. Если комментарий — фраза или предложение, первое слово должно быть написано с большой буквы, если только это не имя переменной, которая начинается с маленькой буквы (никогда не отступайте от этого правила для имен переменных).

Ставьте два пробела после точки в конце предложения.

Если вы — программист, не говорящий по-английски, то всё равно следует использовать английский язык для написания комментариев. Особенно, если нет уверенности на 120% в том, что этот код будут читать только люди, говорящие на вашем родном языке.

8.1 Блоки комментариев

Блок комментариев обычно объясняет код (весь или только некоторую часть), идущий после блока, и должен иметь тот же отступ, что и сам код. Каждая строчка такого блока должна начинаться с символа # и одного пробела после него (если только сам текст комментария не имеет отступа).

Абзацы внутри блока комментариев разделяются строкой, состоящей из одного символа # .

8.2 Комментарии в строке с кодом

Старайтесь реже использовать подобные комментарии.

Такой комментарий находится в той же строке, что и инструкция. «Встрочные» комментарии должны отделяться хотя бы двумя пробелами от инструкции. Они должны начинаться с символа # и одного пробела.

Комментарии в строке с кодом не нужны и только отвлекают от чтения, если они объясняют очевидное.

 counter = counter + 1 # Increment counter 

8.3 Строки документации

Соглашения о написании хорошей документации (docstrings) зафиксированы в PEP 257.

Пишите документацию для всех публичных модулей, функций, классов, методов. Строки документации необязательны для приватных методов, но лучше написать, что делает метод. Комментарий нужно писать после строки с def .

Очень важно, чтобы закрывающие кавычки стояли на отдельной строке. А еще лучше, если перед ними будет ещё и пустая строка.

 """Return something useful Optional plotz says to frobnicate the bizbaz first. """ 

Для однострочной документации можно оставить """ на той же строке.

9. Циклы

9.1 Циклы по спискам

Если нам необходимо в цикле пройти по всем элементам списка, то хорошим тоном (да и более читаемым) будет такой способ:

 colors = ['red', 'green', 'blue', 'yellow'] for color in colors: print(color) 

И хотя бывалые программисты или просто любители C могут использовать и такой код, это моветон.

 colors = ['red', 'green', 'blue', 'yellow'] for i in range(len(colors)): print(colors[i]) 

А если нужно пройти по списку задом наперед, то лучше всего использовать метод reversed:

 colors = ['red', 'green', 'blue', 'yellow'] for color in reversed(colors): print(color) 

Вместо того чтобы писать избыточный код, который и читается-то не очень внятно.

 colors = ['red', 'green', 'blue', 'yellow'] for i in range(len(colors)-1, -1, -1): print(colors[i]) 

9.2 Циклы по списку чисел

Если есть необходимость пройти в цикле по ряду чисел, то метод range будет намного приемлемее, как минимум потому, что этот метод потребляет намного меньше памяти, чем вариант в блоке "Плохо". А представьте, что у вас ряд из трёх миллиардов последовательных чисел!

 for i in range(6): print(i**2) 
 for i in [0, 1, 2, 3, 4, 5]: print(i**2) 

9.3 Циклы по спискам с индексами

Метод enumerate позволяет получить сразу индекс и значение из списка, что, во-первых, предоставляет множество возможностей для дальшнейшего проектирования, а во-вторых, такой код легче читается и воспринимается.

 colors = ['red', 'green', 'blue', 'yellow'] for i, color in enumerate(colors): print(i, '-->', color) 
 colors = ['red', 'green', 'blue', 'yellow'] for i in range(len(colors)): print(i, '-->', colors[i]) 

9.4 Циклы по двум спискам

Используя метод zip, мы получаем из двух списков один список кортежей, что более удобно для дальнейшего использования и требует меньше памяти. Да и просто этот вариант более элегантный.

 names = ['raymond', 'rachel', 'matthew'] colors = ['red', 'green', 'blue', 'yellow'] for name, color in zip(names, colors): print(name, '-->', color) 
 names = ['raymond', 'rachel', 'matthew'] colors = ['red', 'green', 'blue', 'yellow'] n = min(len(names), len(colors)) for i in range(n): print(names[i], '-->', colors[i]) 

10. Импорты

Каждый импорт, как правило, должен быть на отдельной строке.

 import os import sys 
 import sys, os 

В то же время, можно писать так:

 from subprocess import Popen, PIPE 

Импорты всегда располагаются в начале файла, сразу после комментариев уровня модуля, строк документации, перед объявлением констант и объектов уровня модуля. Импорты должны быть сгруппированы в порядке от самых простых до самых сложных:

  • импорты из стандартной библиотеки,
  • сторонние импорты,
  • импорты из библиотек вашего приложения.

Наряду с группированием, импорты должны быть отсортированы лексикографически, нерегистрозависимо, согласно полному пути до каждого модуля.

 import foo from foo import bar from foo.bar import baz from foo.bar import Quux from Foob import ar 

Рекомендуется абсолютное импортирование, так как оно обычно более читаемо и ведет себя лучше (или, по крайней мере, даёт понятные сообщения об ошибках), если импортируемая система настроена неправильно (например, когда каталог внутри пакета заканчивается на sys.path ).

 import mypkg.sibling from mypkg import sibling from mypkg.sibling import example 

Тем не менее, явный относительный импорт является приемлемой альтернативой абсолютному импорту, особенно при работе со сложными пакетами, где использование абсолютного импорта было бы излишне подробным.

 from . import sibling from .sibling import example 

Следует избегать шаблонов импортов ( from import * ), так как они делают неясным то, какие имена присутствуют в глобальном пространстве имён, что вводит в заблуждение как читателей, так и многие автоматизированные средства.

Рекомендуем также ознакомиться с полной версией соглашения о том, как писать код на Python (PEP 8)

Python табуляция (отступы)

Одна из особенностей Python — для оформления блоков кода вместо привычных фигурных скобок, как в C, C ++, Java или операторных скобок begin … end как в Pascal, используются отступы (или табуляция).

Подробнее о том, какие есть правила расстановки отступов — рассмотрим далее.

Почему табуляция в Питоне так важна?

Что такое отступ? Говоря простыми словами, это просто добавление пробела перед определенным оператором.

Отступы — важная концепция языка Питон, так как без правильного их оформления в итоге программист получит ошибку типа IndentationError , код при этом не будет скомпилирован.

Многим программистам жесткое соблюдение отступов может показаться избыточной мерой. Однако именно из-за строго соблюдения правил форматирования, код на Python — чистый, понятный и аккуратный. Отсюда следующие плюсы ��:

  • Не нужно проверять, не потерялась ли лишняя скобка;
  • Читать такой код удобнее (по " Философии Python " — читаемость имеет значение);
  • Легче работать со сторонними библиотеками;
  • Код вашего коллеги будет максимально похож на ваш код.

��‍♂️ Чтобы понять, насколько это важно, можно представить ситуацию, когда в книге удалить все номера страниц, в результате чего нельзя будет понять, где продолжать чтение. Без использования indent-отступа интерпретатор Python не сможет определить, какой оператор необходимо выполнять следующим, что относится к разным блокам кода. В результате и возникает исключение типа IndentationError .

Отступы в языке Python — это способ указать интерпретатору, что оператор (или целая их группа) — это определенный block-комбинация команд для выполнения задачи.

В большинстве других языков, таких как семейство C, Java и прочих для оформления блоков используются фигурные скобки, в Питоне — отступы, для создания которых обычно используются пробелы. Все команды, отделенные от начала строки одним и тем же расстоянием, принадлежат к одному и тому же блоку. Если в нем выделяется еще один блок — используется еще один отступ вправо, и так далее. Рассмотрим это на примере:

def my_small_function(): # [0 пробелов] определение функции со знаком «:» в конце if a > b: # [4 пробела] начало блока условия, располагается внутри функции return a # [8 пробелов] часть блока if else: # [4 пробела] продолжение блока условия, на том же уровне, что и if return b # [8 пробелов] часть блока else print(my_small_function()) # [0 пробелов] вызов функции вне ее блока

�� По умолчанию в Python используется 4 пробела в качестве отступа

Однако программист может использовать и другое их количество, но не менее одного.

Что нам говорит PEP8?

Для каждого уровня отступов необходимо использовать по 4 пробела.

Строки большой длины должны вертикально выравнивать внутренние элементы, для этого используется неявная линия в скобках или с применением висячего отступа. Во втором случае следует помнить: на первой линии не должны располагаться аргументы, остальные строки располагаются так, чтобы быть продолжением неявной линии.

Примеры кода

�� Правильное оформление

# Выравнивание выполнено по открывающей скобке foo = name_of_function(one, two, three, four) # Дополнительные отступы используются для выделения блока от остальных def name_of_function( one, two, three, four): print(one)

Расположение закрывающих скобок в конструкциях с многими строками под началом первой строки:

my_list = [ one, two, three, four, five, six, ] result = some_arguments( '1', '2', '3', '4', '5', '6', )

�� Ошибочное оформление

# Без вертикального выравнивания аргументы не должны располагаться на первой линии foo = name_of_function(one, two, three, four) # Используется больше отступов для выделения блока от остальных def name_of_function( one, two, three, four): print(one)

�� Выборочное оформление

# Использование небольших отступов foo = name_of_function( one, two, three, four)

В многострочных конструкциях закрывающие скобки можно устанавливать на отдельной строке под первым символом (не пробелом) последнего пункта:

some_list = [ one, two, three, four, five, six, ] res = some_arguments( '1', '2', '3', '4', '5', '6', )

Табуляция или пробелы — что использовать? ��‍♂️

Согласно официальной документации, самым предпочтительным способом оформления отступов является использование пробелов, обычно 4

Табуляция может использоваться в случае поддержки готового кода, где все отступы оформлены именно таким способом.

В Python 3 версии запрещено оформлять отступы с использованием табуляции и пробелов, только какой-то один способ. Во второй версии интерпретатор пытается преобразовывать табуляцию в пробелы. Так, при вызове интерпретатора в командной строке с использованием параметра -t появляется предупреждение о наличии смешанного стиля оформления отступов. Если же запуск выполнен с параметром -tt, в этих местах кода будут ошибки. Так что рекомендуется использовать вызова интерпретатора именно с этими параметрами.

Настройка IDE для работы с отступами

Чтобы при написании кода не задумываться о правильной расстановке пробелов для отступов, в редакторах кода и IDE используется специальный функционал, самостоятельно распознающий место создания отдельных блоков, в результате чего пробелы расставляются автоматически.

Рассмотрим, как можно настроить или изменить такие параметры в самых популярных IDE, когда возникает такая необходимость.

PyCharm

В случае использования интегрированной среды разработки PyCharm для настройки оформления отступов необходимо последовательно перейти по таким пунктам меню:

File → Settings → Editor → Code style → Python

Для настроек параметров есть 3 поля:

  1. Tab size — количество пробелов при нажатии клавиши Tab;
  2. Indent — количество пробелов для одного отступа;
  3. Continuation indent — количество пробелов для отступа, когда следующая строка продолжает предыдущую.

�� Еще одна полезная опция — отображение точек вместо каждого пробела, что особо удобно при поддержке чужого кода. В PyCharm для активации этой функции следует перейти File → Settings → Editor → General → Appearance → Show whitespaces , установив галочку напротив соответствующего пункта.

VSCode

Для настройки аналогичных функций в VSCode нужно нажать комбинацию клавиш ctrl + , или перейти по пунктам меню

File → Preferences → Settings

Далее для ускорения в строке поиска ввести tab и установить нужные значения для таких опций:

  • editor: insert spaces — использовать ли пробелы вместо табуляции;
  • editor: tab size — желаемое количество пробелов для одного отступа.

Ошибки при работе с отступами

При неправильном оформлении отступов интерпретатор Python будет сообщать об ошибках. Таких ошибок может быть несколько, рассмотрим основные.

expected an indented block

Данная ошибка может возникать в случае, когда после оглашения начала блока кода — def, if, while и некоторых других на следующей строке отсутствует отступ. Для ее исправления после начала блока должна быть хотя бы одна вложенная строка с отступом.

Возникает ошибка в том случае, когда перед началом строки есть отступ, но на предыдущей отсутствует оглашение начала блока кода, то есть, нет def, if, elif, else, for или while. Обычно такая ситуация возникает случайно, когда программист ставит слишком много пробелов в начале строки.

Indentationerror: expected an indented block

Ошибка возникает в том случае, когда после оглашения блока кода на следующей строке нет отступа или же сделанные отступы состоят из разного количества пробелов.

Таким образом, отступы в языке программирования Python, в отличие от многих других, играют такую же важную роль, как и служебные слова, так как именно они определяют создание блоков кода. Для каждого indent рекомендуется использовать 4 пробела, однако программист по своему желанию может установить и другое их количество, главное — одинаковое во всем проекте.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *