Close

Урок 12. Условия

Каждый, более-менее серьезный алгоритм не является линейным, а содержит ветвления. В момент ветвления определяется значение логического выражения и программа решает инструкции какой ветви кода выполнять. Освоив логические операции, мы можем писать такие программы и поможет нам в этом оператор условия — if.

Оператор IF

Оператор if — это блочный оператор. В коде блок if похож на блоки циклов и функций, его внутренние инструкции отделяются отступами. Ниже представлен простой пример if.

За ключевым словом if должно следовать логическое условие, истинность которого проверяется. В нашем случае 2 + 2 == 4 является истинным и следующий в блоке код выполнится. В обратной же ситуации (например, 2 + 2 == 5) блок кода, следующий за строкой с if будет пропущен.

В операторе условия применяются еще два ключевых слова else и elif. Слово else переводится как «иначе». Добавим его в следующем примере:

Строка со словом else не содержит никакого условия. Блок кода, следующий за ней, будет выполняться всякий раз, когда условие в if будет ложным. В нашем примере блок с else не выполнятся никогда, так как выражение 2 + 2 == 4 — является истинным.

Множественные условия

Ключевое слово elif является сокращение от else if. Оно позволяет добавлять дополнительное условие в условный оператор.

Сначала мы создаем целочисленный объект num и присваиваем ему значение 15. В первой проверке мы смотрим, является ли значение num меньшим чем 10. Эта проверка возвращает нам False. Затем, вторая проверка возвращает там True, так как 15 > 10 и выполняется строка print «number is greater than 10» . После того как хотя бы одно условия сработало блок else пропускается полностью. Если мы изменим num на 8 или 10, то выполнятся соответственно первый и последний блоки кода в условном операторе.

Возможна ситуация, когда несколько условий будут истинными. В таком случае отработает блок кода, размещенный в первом if или elif по порядку, а следующие будут проигнорированы. Это проиллюстрирует следующий пример:

После того как программа выведет строчку «1 is less than 2» она закончит выполнение условного оператора полностью, таким образом, строка print «3 is less than 4» будет пропущена, несмотря на то, что условие 3 < 4 верно.

Вложенные условия

Мы можем делать вложенные операторы условия, также как это было при работе с циклами for и while.

В начале этого примера мы проверяем, чему равна переменная want_cake. Если она равна «yes» то мы совершаем следующую проверку have_cake == «no» и выполняется соответствующий блок кода. Поменяв значения переменных want_cake и have_cake можно понаблюдать за тем, что программа выведет на экран.

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

В языке python существует два ключевых слова для управления работой циклов: break и continue. Эти слова используются и в цикле for и в цикле while и совместно с условным оператором.

Часто возникает ситуация, когда нужно остановить выполнение цикла при каком-либо условии. Для этого применяется break.

Без блока с оператором if, программа закончила бы свое выполнение следующим выводом: Finished with i = 3. Теперь, во время каждой итерации осуществляется проверка на равенство переменной I числу 2, и, в этом случае, оператор break прерывает работу цикла. Финальный вывод выглядит: Finished with i = 2.

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

Так же, как и break continue позволяет перешагнуть в конец итерации, но в отличие от первого, continue позволяет продолжить выполнение цикла. Рассмотрим на следующем примере:

Теперь мы пропустим команду print i, когда i будет равно 2, но цикл продолжит работу далее и закончит с: Finished with i = 3.

Вообще, рекомендуется давать переменным осмысленные имена. Имена I,j, k являются исключениями, так как они широко применяется для переменных циклов не только на языке python.

Циклы могут иметь свои собственный else-блок, хотя эта ситуация встречается довольно редко. Объявленный блок else в цикле срабатывает в том случае, когда выход из цикла произошел своим ходом, без команды break. Рассмотрим подобный пример.

В примере происходит поиск буквы X в заданной фразе. Так как во фразе нет этой буквы, то после работы цикла мы увидим сообщение «There was no ‘X’ in the phrase». Если же мы добавим во фразу букву X, то такого сообщения мы не увидим.

Также else может применяться совместно с циклом while.

Здесь мы даем пользователю три попытки на ввод корректного пароля. Если пароль совпадет, мы прервем цикл. В обратном случае мы увеличиваем счетчик попыток (первый else-блок). Второй else-блок относится к самому while. Когда число попыток станет равно 3, то пользователь увидит сообщение: «Suspicious activity. The authorities have been alerted.».

Инкременты и декременты

Для увеличения переменной на какое-либо число часто используется оператор +=. В нашем примере мы можем заменить строку
tries = tries + 1
строкой
tries += 1

Помимо += есть еще несколько сокращенных математических операторов. -= означает “уменьшить число на”, *= “умножить число на”, /= — “поделить на”. Например, если мы захотим увеличить переменную tries в три раза, достаточно будет написать:

tries *= 3
Мы рассмотрели еще один важный элемент программирования – оператор условия.

Поделиться: