Найти в Дзене

Обучение Python ч.9.Ветвление. Условные конструкции и выражения.

Иногда нашу программу нужно научить «думать», то есть, принимать решения в зависимости от внешних условий, по типу: «Если условие равно А, то выполняем инструкцию АВС». Это есть ни что иное, как логическая операция. В обычной жизни подобные операции производятся в два этапа. Сперва определяется, удовлетворяет ли действительность заданным условиям, то есть равны ли обстоятельства True или False. Если обстоятельства равны True, то мы выполняем одни действия. В противном случае - другие. Операции сравнения Операции сравнения реализуют процесс сравнения двух операндов между собой по определённому условию. В реальном мире это можно выразить следующим образом: «А, больше Б?» или так «5 = 2». То есть мы буквально задаём вопрос и получаем на него ответ в виде «Да» или «Нет». В Python всё выглядит таким же образом. Вы просто сравниваем два значения и если это значение действительно, то оператор сравнения возвращает нам значение типа Boolean, то есть, True или False. # Два равно двум? Если
Оглавление

Иногда нашу программу нужно научить «думать», то есть, принимать решения в зависимости от внешних условий, по типу: «Если условие равно А, то выполняем инструкцию АВС». Это есть ни что иное, как логическая операция. В обычной жизни подобные операции производятся в два этапа. Сперва определяется, удовлетворяет ли действительность заданным условиям, то есть равны ли обстоятельства True или False. Если обстоятельства равны True, то мы выполняем одни действия. В противном случае - другие.

Операции сравнения

Операции сравнения реализуют процесс сравнения двух операндов между собой по определённому условию. В реальном мире это можно выразить следующим образом: «А, больше Б?» или так «5 = 2».

То есть мы буквально задаём вопрос и получаем на него ответ в виде «Да» или «Нет». В Python всё выглядит таким же образом. Вы просто сравниваем два значения и если это значение действительно, то оператор сравнения возвращает нам значение типа Boolean, то есть, True или False.

# Два равно двум? Если да, то возвращаем True
# иначе - False
answer = 2 == 2
print(answer) # True

Предположим, что мы пишем модуль для регистрации пользователя на сайте с контентом для совершеннолетних. И в том случае, если пользователь при регистрации указывает возраст меньше 18 лет, мы должны прервать его регистрацию и оповестить о том, что содержимое сайта доступно только лицам чей возраст равен, либо больше 18 лет.

В таком случае, нам и пригодятся операции сравнения.

Оператор больше «>»

Возвращает True, если левый операнд больше правого, иначе – False.

Используется так:

<первый_операнд> > <второй_операнд>

В коде:

result = 5 > 2

Оператор меньше «<»

Возвращает True, если левый операнд меньше правого, иначе – Falses.

<первый_операнд> < <второй_операнд>

В коде:

result = 5 < 2

Оператор больше либо равно «>=»

Возвращает True, если левый операнд больше или равен правому, иначе False.

<первый_операнд> >= <второй_операнд>

В коде:

result = 5 >= 2

Оператор меньше либо равно «<=»

Возвращает True, если левый операнд меньше или равен правому, иначе False.

<первый_операнд> <= <второй_операнд>

В коде:

result = 5 <= 2

Оператор равно «==»

Возвращает True, если левый операнд равен правому, иначе False. <первый_операнд> == <второй_операнд>

В коде:

result = 5 == 2

Оператор не равно «!=»

Возвращает True, если левый операнд не равен правому, иначе False.
<первый_операнд> != <второй_операнд>

В коде:

result = 5 != 2

На примере проверки возраста пользователя:

# Возраст пользователя
age = 25
# Минимальный возраст
minimum_age = 18

res = age > minimum_age # True возраст больше чем минимальный возраст
res = age < minimum_age # False возраст не меньше чем минимальный возраст
res = age >= minimum_age # True возраст больше или равен минимальному возрасту
res = age <= minimum_age # False возраст не меньше и не равен минимальному возрасту
res = age == minimum_age # False возраст не равен минимальному возрасту
res = age != minimum_age # True возраст не равен минимальному возрасту

Логические операторы

Нередко возникает потребность в создании более сложных логических выражений, например, учитывать несколько логических условий по типу: «Если пользователю больше 18 лет и он женского пола, то…» или «Если пользователь младше 18 лет или старше 70, то…».

Реализуется это при помощи логических операторов. Логические операторы, это в сущности такие конструкции которые позволяют объединять отдельные операции в одну более сложную и составную.

Оператор «and» (Логическое и)

Данный оператор возвращает True, если все части выражения возвращают True.

age = 25
sex = "male"
res = age > 18 and sex == "male" # True

То есть, если одновременно и выражение age > 18 и выражение sex == "male" будут возвращать True, то всё выражение вернёт True.

Оператор «or» (Логическое или)

Данный оператор возвращает True, если хотя бы одна часть выражения возвращает True.

age = 25
sex = "male"

res = age > 150 or sex == "male" # True

То есть, если хотя бы одно выражение age > 150 (это False) или выражение sex == "male" (это True) будет возвращать True, то всё выражение вернёт True.

Оператор «not» (Логическое не)

Данный оператор возвращает True, если выражение равно False. Например, при регистрации пользователя, нам необходимо определить, есть ему 18 или нет, если ему нет 18, то регистрация на сайте для него запрещена.

age = 15

res = not age >= 18 # True

Выражение age >= 18 возвращает False, т.к. пользователю меньше 18 лет, но из-за того, что перед выражением стоит not, всё выражение в целом – возвращает True. Проще говоря, оператор not – переворачивает значение, если вы ставите его перед выражением возвращающим True – он возвращает False, если выражение возвращает False – он возвращает True.

Условная конструкция(блок) if

Допустим, при помощи логических выражений мы научились определять, истинно то или иное условие, или ложно. Но как же в зависимости от значений этих условий влиять на алгоритм управления программой?
Для этого в языке Python существует условная конструкция if. В условную конструкцию if помещается логическое выражение, и если оно возвращает True – срабатывает блок if, иначе ничего не происходит.
Как выглядит условная конструкция if:

if логическое_выражение:
# Инструкции, которые
# будут выполняться
# если условное выражение
# вернёт True

Давайте посмотрим на примере:

age = 18

if age >= 18:
print("Вы можете получить права")

Если мы запустим этот код, то в консоль будет выведено:

Вы можете получить права

Но если мы изменим значение переменной age на 15 и запустим код, то он ничего не выведет, так как логическая конструкция «не сработала», потому что логическое выражение вернуло False, ведь переменная age не больше 18.

Блок else

А что, если в случае, когда условное выражение возвращает False, мы должны произвести некоторое действие. Для этого у if, есть необязательный блок else, он срабатывает только в том случае, когда условное выражение в if вернулся False:

age = 15

if age >= 18:
print("Вы можете получить права")
else:
print("Вам ещё нет 18 лет")

Выводит:

Вам ещё нет 18 лет

А если мы поменяем значение переменной age на 22 выведет:
Вы можете получить права

Блок elif

Но что, если в рамках одного блока необходимо ввести сразу несколько условий? Например, мы пишем программу, которая в зависимости от возраста человека прогнозирует вероятность получения им прав и нам нужно выводить результаты в зависимости от диапазона.
Для этого нужен блок elif. Данный блок, подобен блоку else, он срабатывает только в том случае, если предшествующий ему блок if или elif не сработал. Разница в том, что блок elif тоже принимает условное выражение, и если оно возвращает False, то этот блок также не срабатывает.

Например:

animal = "Кот"

if animal == "Кот":
print("В переменной animal сидит Кот")
elif animal == "Пёс":
print("В переменной animal сидит Пёс")
elif animal == "Голубь":
print("В переменной animal сидит Голубь")
else:
print("В переменной animal сидит неизвестное существо")

Выводит:

В переменной animal сидит Кот

в зависимости от того что будет введено вместо "Кот" будет выведено соответствующее значение.

Финита
следующий урок