Поток команд (if, elif, while и т.д.)
Оператор if
Оператор if
используется для проверки условий: если условие верно, выполняется блок выражений (называемый “if-блок”), иначе выполняется другой блок выражений (называемый “else-блок”). Блок “else” является необязательным.
Пример: (сохраните как if.py
)
Вывод:
Как это работает:
В этой программе мы принимаем варианты от пользователя и проверяем, совпадают ли они с заранее заданным числом. Мы устанавливаем переменной
number
значение любого целого числа, какого хотим. Например,23
. После этого мы принимаем вариант числа от пользователя при помощи функцииinput()
. Функции – это всего-навсего многократно используемые фрагменты программы.Мы передаём встроенной функции
input
строку, которую она выводит на экран и ожидает ввода от пользователя. Как только мы ввели что-нибудь и нажали клавишуEnter
, функцияinput()
возвращает строку, которую мы ввели. Затем мы преобразуем полученную строку в число при помощиint()
, и сохраняем это значение в переменнуюguess
. Вообще-то,int
– это класс, но на данном этапе вам достаточно знать лишь, что при помощи него можно преобразовать строку в целое число (предполагая, что строка содержит целое число).Далее мы сравниваем число, введённое пользователем, с числом, которое мы выбрали заранее. Если они равны, мы печатаем сообщение об успехе. Обратите внимание, что мы используем соответствующие уровни отступа, чтобы указать Python, какие выражения относятся к какому блоку. Вот почему отступы так важны в Python. Я надеюсь, вы придерживаетесь правила “постоянных отступов”, не так ли?
Обратите внимание, что в конце оператора
if
стоит двоеточие – этим мы показываем, что далее следует блок выражений.После этого мы проверяем, верно ли, что пользовательский вариант числа меньше загаданного, и если это так, мы информируем пользователя о том, что ему следует выбирать числа немного больше этого. Здесь мы использовали выражение
elif
, которое попросту объединяет в себе два связанныхif else-if else
выражения в одно выражениеif-elif-else
. Это облегчает чтение программы, а также не требует дополнительных отступов.Выражения
elif
иelse
также имеют двоеточие в конце логической строки, за которым следуют соответствующие блоки команд (с соответствующим числом отступов, конечно).Внутри if-блока оператора
if
может быть другой операторif
и так далее – это называется вложенным операторомif
.Помните, что части
elif
иelse
не обязательны. Минимальная корректная запись оператораif
такова:После того, как Python заканчивает выполнение всего оператора
if
вместе с его частямиelif
иelse
, он переходит к следующему выражению в блоке, содержащем этот операторif
. В нашем случае это основной блок программы (в котором начинается выполнение программы), а следующее выражение – этоprint('Завершено')
. После этого Python доходит до конца программы и просто выходит из неё.
Оператор while
Оператор while
позволяет многократно выполнять блок команд до тех пор, пока выполняется некоторое условие. Это один из так называемых операторов цикла. Он также может иметь необязательный пункт else
.
Пример: (сохраните как while.py
)
Вывод:
Как это работает:
В этой программе мы продолжаем играть в игру с угадыванием, но преимущество состоит в том, что теперь пользователь может угадывать до тех пор, пока не угадает правильное число, и ему не придётся запускать программу заново для каждой попытки, как это происходило до сих пор. Это наглядно демонстрирует применение оператора
while
.Мы переместили операторы
input
иif
внутрь циклаwhile
и установили переменнуюrunning
в значениеTrue
перед запуском цикла. Прежде всего проверяется, равно ли значение переменнойrunning
True
, а затем происходит переход к соответствующему while-блоку. После выполнения этого блока команд условие, которым в данном случае является переменнаяrunning
, проверяется снова. Если оно истинно, while-блок запускается снова, в противном случае происходит переход к дополнительному else-блоку, а затем – к следующему оператору.
Блок else
выполняется тогда, когда условие цикла while
становится ложным (False
) – это может случиться даже при самой первой проверке условия. Если у цикла while
имеется дополнительный блок else
, он всегда выполняется, если только цикл не будет прерван оператором break
.
True
и False
называются булевым типом данных, и вы можете считать их эквивалентными значениям 1
и 0
соответственно.
Примечание для программистов на C/C++
Помните, что у цикла while
может быть блок else
.
Цикл for
Оператор for..in
также является оператором цикла, который осуществляет итерацию по последовательности объектов, т.е. проходит через каждый элемент в последовательности.
Пример: (сохраните как for.py
)
Вывод:
Как это работает:
В этой программе мы выводим на экран последовательность чисел. Мы генерируем эту последовательность, используя встроенную функцию
range
.Мы задаём два числа, и
range
возвращает последовательность чисел от первого числа до второго. Например,range(1,5)
даёт последовательность[1, 2, 3, 4]
. По умолчаниюrange
принимает значение шага, равное 1. Если мы зададим также и третье числоrange
, оно будет служить шагом. Например,range(1,5,2)
даст[1,3]
. Помните, интервал простирается только до второго числа, т.е. не включает его в себя.Обратите внимание, что
range()
генерирует последовательность чисел, но только по одному числу за раз – когда оператор for запрашивает следующий элемент. Чтобы увидеть всю последовательность чисел сразу, используйтеlist(range())
.Затем цикл
for
осуществляет итерацию по этому диапазону -for i in range(1,5)
эквивалентноfor i in [1, 2, 3, 4]
, что напоминает присваивание переменной i по одному числу (или объекту) за раз, выполняя блок команд для каждого значенияi
. В данном случае в блоке команд мы просто выводим значение на экран.
Помните, что блок else
не обязателен. Если он присутствует, он всегда выполняется один раз после окончания цикла for
, если только не указан оператор break.
Помните также, что цикл for..in
работает для любой последовательности. В нашем случае это список чисел, сгенерированный встроенной функцией range
, но в общем случае можно использовать любую последовательность любых объектов!
Оператор break
Оператор break
служит для прерывания цикла, т.е. остановки выполнения команд даже если условие выполнения цикла ещё не приняло значения False
или последовательность элементов не закончилась.
Важно отметить, что если циклы for
или while
прервать оператором break, соответствующие им блоки else
выполняться не будут.
Пример: (сохраните как break.py
)
Вывод:
Как это работает:
В этой программе мы многократно считываем пользовательский ввод и выводим на экран длину каждой введённой строки. Для остановки программы мы вводим специальное условие, проверяющее, совпадает ли пользовательский ввод со строкой
'выход'
. Мы останавливаем программу прерыванием цикла операторомbreak
и достигаем её конца.Длина введённой строки может быть найдена при помощи встроенной функции
len
.Помните также, что оператор
break
может применяться и в циклеfor
.
Оператор continue
Оператор continue
используется для указания Python, что необходимо пропустить все оставшиеся команды в текущем блоке цикла и продолжить со следующей итерации цикла.
Пример: (сохраните как continue.py
)
Вывод:
Как это работает:
В этой программе мы запрашиваем ввод со стороны пользователя, но обрабатываем введённую строку только если она имеет длину хотя бы в 3 символа. Итак, мы используем встроенную функцию
len
для получения длины строки, и если длина менее 3, мы пропускаем остальные действия в блоке при помощи оператораcontinue
. В противном случае все остальные команды в цикле выполняются, производя любые манипуляции, которые нам нужны.Заметьте, что оператор
continue
также работает и с цикломfor
.
Last updated