Три конструкции структурного программирования из главы 07 — здесь, наконец, в реальном синтаксисе, который встретится в каждом Python-скрипте, который ты когда-либо напишешь.
В Pascal (глава 07) отступы были соглашением для читаемости — формально код работал бы и
без них, границы блоков задавали begin/end. В Python отступы —
обязательная часть синтаксиса: именно они, а не скобки или ключевые слова,
определяют, какие строки относятся к телу условия или цикла, а какие уже находятся вне
его.
Смешивание пробелов и табуляции, или просто непоследовательный отступ в соседних строках
одного блока — вызовет ошибку IndentationError при попытке запустить
скрипт. Стандартная практика — использовать 4 пробела на один уровень вложенности
последовательно по всему файлу, и большинство современных редакторов кода делают это
автоматически при нажатии Tab.
| Оператор | Значение |
|---|---|
| == | Равно (не путать с одиночным = — присваиванием) |
| != | Не равно |
| < > <= >= | Меньше, больше, меньше/больше или равно |
| and | Логическое И — оба условия должны быть истинны |
| or | Логическое ИЛИ — достаточно одного истинного условия |
| not | Логическое отрицание |
В условии Python принимает не только настоящие True/False, но и
автоматически трактует некоторые другие значения как ложные: число 0, пустую строку
"", пустой список, специальное значение None (отсутствие
значения). Всё остальное считается истинным. Это позволяет писать компактные проверки
вроде if name: вместо более многословного if name != "":, но
стоит явно знать про это поведение, чтобы не удивляться, почему условие сработало
неожиданным образом.
В BASIC такой же цикл собирался вручную из GOTO и проверки условия отдельными
пронумерованными строками — фактически то же самое, что делает while
здесь, только с явно видимой структурой вместо разбросанных по программе прыжков.
while — по сути тот же цикл "проверяй условие и повторяй, пока оно
истинно", просто с синтаксисом, честно отражающим структурное программирование главы 07,
а не GOTO главы 06.
В отличие от классического for в C-подобных языках (которым управляют счётчик,
условие и шаг, записанные в одной строке), for в Python — это цикл
"для каждого": перебор элементов какой-либо последовательности одного за
другим.
range(5) создаёt последовательность чисел от 0 до 4 (пять значений, не
включая само число 5) — стандартный способ организовать цикл с заданным числом повторений,
когда нужен именно счётчик, а не перебор готовой коллекции данных (той же теме будет
посвящена глава 17 про списки).
break — немедленно прерывает цикл целиком, независимо от условия.continue — пропускает оставшуюся часть текущей итерации и переходит к
следующей, не завершая цикл целиком.Условия и циклы можно вкладывать друг в друга — цикл внутри условия, условие внутри цикла, и так далее, с каждым уровнем вложенности добавляющим ещё один шаг отступа. Именно эта вложенная структура и есть то самое "структурное программирование" из главы 07 в чистом виде, без единого GOTO.
Следующая глава — функции: способ дать имя повторяющемуся блоку кода и вызывать его снова и снова, не копируя текст — прямое развитие идеи GOSUB из BASIC и процедур Pascal, уже встречавшихся в главах 06–07.
Книга бесплатна для чтения. Автор — Тариел Бежанидзе, компьютерный мастер в Батуми · tariel.ge · все бесплатные книги. Копировать текст целиком на другие сайты — только со ссылкой на источник.