
Условный оператор. Если то иначе. Программирование на языке Питон для начинающих
Все ранее рассматриваемые программы имели линейную структуру: все инструкции выполнялись последовательно одна за одной, каждая записанная инструкция обязательно выполняется.
Подобные действия исполнителя (программы на языке Python) можно назвать Последовательными действими и описываются они последовательными строками программы. Стоит, правда, добавить, что в программах Python важны отступы, поэтому все операторы, входящие в последовательность действий, должны иметь один и тот же отступ.
Разумеется, одними только последовательными действиями в программировании не обойтись, поэтому при написании алгоритмов используется еще и ветвление. Ветвление так же еще называют условной инструкцией — это развилка на пути выполнения программы. Наша программа может пойти по одному пути, а может и по другому. То, какой путь будет выбран, определяется в зависимости от проверки условия.
Операторы сравнения
Как правило, в качестве проверяемого условия используется результат вычисления одного из следующих операторов сравнения:
<
Меньше — условие верно, если первый операнд меньше второго.
>
Больше — условие верно, если первый операнд больше второго.
<=
Меньше или равно.
>=
Больше или равно.
==
Равенство. Условие верно, если два операнда равны.
!=
Неравенство. Условие верно, если два операнда неравны.
Например, условие (x * x < 1000) означает “значение x * x меньше 1000”, а условие (2 * x != y) означает “удвоенное значение переменной x не равно значению переменной y”.
Операторы сравнения в Питоне можно объединять в цепочки (в отличии от большинства других языков программирования, где для этого нужно использовать логические связки / логические операторы), например, a == b == c или 1 <= x <= 10.
Операторы сравнения возвращают значения специального логического типа bool. Значения логического типа могут принимать одно из двух значений: True (истина) или False (ложь). Если преобразовать логическое True к типу int, то получится 1, а преобразование False даст 0. При обратном преобразовании число 0 преобразуется в False, а любое ненулевое число в True. При преобразовании str в bool пустая строка преобразовывается в False, а любая непустая строка в True. Булевы значения истина и ложь всегда возвращаютсятся в качестве результата, когда выражение сравнивается или оценивается (Попробуйте сами. Нажмите кнопку RUN):
x = 2
print(x == 2) #True
print(x == 3) #False
print(x < 3) #True
Допустим мы хотим по данному числу x определить его абсолютную величину (модуль). Программа должна напечатать значение переменной x, если x>0 или же величину -x в противном случае. Линейная структура программы нарушается: в зависимости от справедливости условия x>0 должна быть выведена одна или другая величина. Соответствующий фрагмент программы на Питоне имеет вид (Попробуйте сами. Нажмите кнопку RUN) Можно изменить значение переменной х и увидеть что вывод программы всегда будет положительным числом:
x = -7
if x > 0:
print(x)
else:
print(-x)
В этой программе используется условная инструкция if
(если). После слова if указывается проверяемое условие (x > 0
), завершающееся двоеточием. После этого идет блок (последовательность) инструкций, который будет выполнен, если условие истинно (верно), в нашем примере это вывод на экран величины x. Затем идет слово else (иначе), также завершающееся двоеточием, и блок инструкций, который будет выполнен, если проверяемое условие неверно (ложно), в данном случае будет выведено значение -x.
Этот фрагмент кода на Python интуитивно понятен каждому, кто помнит, что if по-английски значит "если", а else - "иначе". Оператор ветвления имеет в данном случае две части, операторы каждой из которых записываются с отступом вправо относительно оператора ветвления. Более общий случай - оператор выбора - можно записать с помощью следующего синтаксиса:
if Условие:
Блок инструкций 1
else:
Блок инструкций 2
Блок инструкций 1 будет выполнен, если Условие истинно. Если Условие ложно, будет выполнен Блок инструкций 2.
В условной инструкции может отсутствовать слово else и последующий блок. Такая инструкция называется неполным ветвлением. Например, если дано число x и мы хотим заменить его на абсолютную величину x, то это можно сделать следующим образом:
1 2 3 |
if x < 0: x = -x print(x) |
В этом примере переменной x будет присвоено значение -x, но только в том случае, когда x<0. А вот инструкция print(x) будет выполнена всегда, независимо от проверяемого условия.
Напомню еще раз (так как это очень важно для языка Python) для выделения блока инструкций, относящихся к инструкции if
или else
в языке Питон используются отступы. Все инструкции, которые относятся к одному блоку, должны иметь равную величину отступа, то есть одинаковое число пробелов в начале строки. Рекомендуется использовать отступ в 4 пробела и не рекомедуется использовать в качестве отступа символ табуляции.
Это одно из существенных отличий синтаксиса Питона от синтаксиса большинства языков, в которых блоки выделяются специальными словами, например, нц... кц в Кумире, begin... end в Паскале или {фигурными} скобками в Си.
Логические операторы
Иногда нужно проверить одновременно не одно, а несколько условий. Например, проверить, является ли данное число четным можно при помощи условия (n % 2 == 0) (остаток от деления n на 2 равен 0), а если необходимо проверить, что два данных целых числа n и m являются четными, необходимо проверить справедливость обоих условий: n % 2 == 0 и m % 2 == 0, для чего их необходимо объединить при помощи оператора and (логическое И): n % 2 == 0 and m % 2 == 0.
В Питоне существуют стандартные логические операторы: логическое И, логическое ИЛИ, логическое отрицание (НЕ).
Логическое И является бинарным оператором (то есть оператором с двумя операндами: левым и правым) и имеет вид and
. Оператор and возвращает True тогда и только тогда, когда оба его операнда имеют значение True.
Логическое ИЛИ является бинарным оператором и возвращает True тогда и только тогда, когда хотя бы один операнд равен True. Оператор “логическое ИЛИ” имеет вид or
.
Логическое НЕ (отрицание) является унарным (то есть с одним операндом) оператором и имеет вид not
, за которым следует единственный операнд. Логическое НЕ возвращает True, если операнд равен False и наоборот.
Пример. Проверим, что хотя бы одно из чисел a или b оканчивается на 0:
if a % 10 == 0 or b % 10 == 0:
Проверим, что число a — положительное, а b — неотрицательное:
if a > 0 and not (b < 0):
Или можно вместо not (b < 0) записать (b >= 0).
Инструкция множественного ветвления
Иногда нужно выбирать не из двух альтернативных путей выполнения, а из нескольких, например, в зависимости от того, является ли некоторая величина положительной, отрицательной или равной нулю следует выполнить одно из трех действий. В этом случае можно использовать инструкцию множественного ветвления. Пример использования инструкции множественного ветвления:
1 2 3 4 5 6 7 8 9 |
x=2 if x==1: print "один" elif x==2: print "два" elif x==3: print "три" else: print "другое число" |
В множественном ветвлении должна быть одна инструкция if
с последующим блоком, одна или несколько инструкций elif
с последующими блоками и, возможно, инструкция else
с последующим блоком. Все условия проверяются одно за другим и будет выполнен блок инструкций, который следует за условием, значение которого будет истинно. Если истинными окажутся несколько условий, то выполнится только тот блок инструкций, который следует после первого из этих условий (а остальные условия даже не будут проверяться). Если же все условия будут ложны, то выполнится else
-блок, если он есть.
Вложенные условные инструкции
Внутри блока условной инструкции могут находится любые другие инструкции, в том числе и условная инструкция. Такие инструкции называются вложенными. Синтаксис вложенной условной инструкции такой:
if условие1: ... if условие2: ... else: ... ... else: ...
Вместо многоточий можно писать произвольные инструкции. Обратите внимание на размеры отступов перед инструкциями. Блок вложенной условной инструкции отделяется большим отступом. Уровень вложенности условных инструкций может быть произвольным, то есть внутри одной условной инструкции может быть вторая, а внутри нее — еще одна и т.д.
Пример. У нас есть две ненулевые переменные x
и y
, мы хотим определить, в какой четверти координатной плоскости находится точка с координатами (x,y)
x=4
y=-6
if x>0:
print ("x>0")
if y>0:
print ("y>0")
print ("I (first)")
else:
print ("y<0")
print ("IV (fourth)")
else:
print ("x<0")
if y>0:
print ("y>0")
print ("II (second)")
else:
print ("y<0")
print ("III (third)")
Упражнение
Измените значение переменных так, чтобы все условия были Истинными, а программа в результате вывела на эеран цифры от 1 до 6. Попробуйте сами. Нажмите кнопку SOLUTION чтобы увидеть готовый код (Но лучше сначала попробовать самостоятельно). НУЖНА подсказака - пишите в комментарии! ))
number = 10
second_number = 10
first_array = []
second_array = [1,2,3]
if number > 15:
print("1")
if first_array:
print("2")
if len(second_array) == 2:
print("3")
if len(first_array) + len(second_array) == 5:
print("4")
if first_array and first_array[0] == 1:
print("5")
if not second_number:
print("6")
number = 16
second_number = 0
first_array = [1,2,3]
second_array = [1,2]
if number > 15:
print("1")
if first_array:
print("2")
if len(second_array) == 2:
print("3")
if len(first_array) + len(second_array) == 5:
print("4")
if first_array and first_array[0] == 1:
print("5")
if not second_number:
print("6")
test_object("number")
test_object("second_number")
test_object("first_array")
test_object("second_array")
success_msg("Super!")
Статья написана на основе материалов:
- http://informatics.mccme.ru/
- https://server.179.ru
- https://www.learnpython.org
- http://www.intuit.ru/