Условия и циклы

Предисловие

Этот раздел посвящён командам if и while.

Дадим здесь их краткий обзов.

Ветвление

Команда if имеет следующий синтаксис:

if формула:
  команды
elif формула:
  команды
elif формула:
  команды
...
elif формула:
  команды
else:
  команды

Все elif (которых может быть сколько угодно) и else (которого не может быть больше одного) являются опциональными.

Выполняется такая команда следующим образом:

  • вычисляется первая формула, если её значение «истинно» (что именно означает «истинность», пока уточнять не будем), выполняется первая последовательность команд; на этом исполнение if завершается
  • в противном случае вычисляется вторая формула, если её значение «истинно» выполняется вторая последовательность команд; на этом исполнение if завершается
  • в противном случае вычисляется первая формула, если её значение «истинно», выполняется третья последовательность команд; на этом исполнение if завершается
  • и так далее
  • если никакая из формул не дала «истинного» значения, выполняются команды, которые записаны в блоке else:

Важно! все команды внутри одной последовательности должны начинаться с одной и той же колонки, причём более правой, чем та, в которой стоят слова if, elif, else. В случае, если команда одна, допускается её ставить в ту же строчку, что и соответствующий ей if, elif, else.

Цикл

Команда while имеет следующий синтаксис:

while формула:
  команды

(есть ещё более сложный while .. else, но мы не будем его трогать, тем более что почти нигде, кроме Питона, он не встречается).

Вышеупомянутая команда while выполняется так, как выполнялся бы бесконечный код

if формула:
  команды
  if формула:
    команды
    if формула:
      команды
      ...

Из цикла можно преждевременно выйти командами continue и break:

  • первая из них пропускает все оставшиеся до следующей проверки истинности формулы команды
  • вторая — завершает выполнение всей команды while

Запустите следующую программу для того, чтобы понять разницу:

i = 1
while print("проверка условия в", i, "раз") == None:
  print("перед break")
  if i > 10: break
  print("перед continue")
  i = i + 1
  continue
  print("после continue")
  i = i + 2

Истинность

Теперь чуть-чуть поговорим о вышеупомянутой «истинности»:

  • специальная константа True истинна
  • специальная константа False — нет
  • другие объекты тоже имеют свои истинности, но как именно эти истинности вычисляются — уточнять не будем: это не настолько важно
  • операторы ==, <, <=, >, >= ведут себя так, как и ожидается от «равно», «меньше», «меньше или равно», «больше», «больше или равно»
  • операторы and, or, not реализуют логические конъюнкцию, дизъюнкцию и отрицание
  • первые два из них имеют специальные правила вычисления формул, для которых они являются головой: а именно, они вычисляют свою правую подформулу только если первая оказалась истинной (для and) или ложной (для or)