Добавить в корзинуПозвонить
Найти в Дзене

О важности отступов в Python

*** В Python границы блоков и операторов определяются автоматически, по отступам строк (по пустому пространству слева от кода). Все операторы с одинаковыми отступами (с отступами на одинаковое расстояние) принадлежат к одному блоку кода. Неправильный отступ в программе приведёт или к исключению, или к тому, что программа будет работать не так, как ожидалось. Рассмотрим простой пример*. nums = [1, 2, 3, 4, 5, 6] # Создаём список чисел n = 2 # Искомое число found = False # Переменная для хранения результата поиска (по умолчанию — не найдено) for num in nums: # Перебираем каждый элемент списка if n == num: # Если текущий элемент равен искомому числу found = True # Устанавливаем found в True (значит, число найдено) break # Прерываем цикл, так как искать дальше нет смысла print(f'List contains {n}: {found}') # Выводим результат *** Как работает программа: 1. Инициализация: • Создаётся список nums с числами от 1 до 6.

***

В Python границы блоков и операторов определяются автоматически, по отступам строк (по пустому пространству слева от кода).

Все операторы с одинаковыми отступами (с отступами на одинаковое расстояние) принадлежат к одному блоку кода.

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

Рассмотрим простой пример*.

nums = [1, 2, 3, 4, 5, 6] # Создаём список чисел

n = 2 # Искомое число

found = False # Переменная для хранения результата поиска (по умолчанию — не найдено)

for num in nums: # Перебираем каждый элемент списка

if n == num: # Если текущий элемент равен искомому числу

found = True # Устанавливаем found в True (значит, число найдено)

break # Прерываем цикл, так как искать дальше нет смысла

print(f'List contains {n}: {found}') # Выводим результат

***

Как работает программа:

1. Инициализация:

• Создаётся список nums с числами от 1 до 6.

• Переменная n хранит число, которое мы ищем (в данном случае 2).

• Переменная found изначально равна False. Это логическое значение, которое станет True, если число будет найдено.

2. Цикл поиска:

• Код проходит по каждому элементу num в списке nums.

• На каждой итерации он проверяет: «Равен ли текущий элемент num нашему числу n?».

• Как только условие n == num становится верным (для числа 2), выполняются две команды внутри блока if:

1) found = True (мы помечаем, что число найдено);

2) break (мы немедленно выходим из цикла. Это оптимизация, чтобы не тратить время на проверку оставшихся чисел (3, 4, 5, 6), так как мы уже получили нужный результат).

3. Вывод результата:

• После завершения цикла (или его прерывания) программа выводит строку.

• Так как число 2 есть в списке, переменная found стала True.

• Результат на экране: List contains 2: True.

Если бы мы искали число, которого нет в списке (например, 10), цикл бы прошёл по всем элементам, условие никогда не стало бы истинным, и переменная found так и осталась бы False. Вывод был бы: List contains 10: False.

***

Вернёмся к нашим баранам отступам.

Когда оператор break выровнен со строкой found = True (в сумме – на 8 отступов), мы получаем правильный результат: List contains 2: True.

Если же оператор break выровнен со строкой if n == num: (на 4 отступа), мы получаем неверный результат: List contains 2: False.

-2

***

Примечания

* Встроенный текстовый dzen-редактор не позволяет сохранять отступы в публикуемом программном коде (отсутствие этих отступов в Python приведёт к ошибке!).

1. Отступ может состоять из любого количества пробелов и табуляций, – при условии, что он одинаков для всех операторов в отдельно взятом блоке программного кода.

2. Распространённым соглашением в мире Python по отступам являются 4 пробела или одна табуляция.

3. Основные ошибки с отступами:

SyntaxError: unexpected indent (Синтаксическая ошибка: неожиданный отступ);

SyntaxError: unindent does not match any outer indentation level (Синтаксическая ошибка: не соответствует ни одному внешнему уровню отступа).

IndentationError: expected an indented block (Ошибка отступа: ожидается блок с отступом).