Все программы, которые мы писали, имели линейную структуру: все действия выполняются обязательно и в той последовательности, что вы написали их в скрипте. Иногда нам хочется получать разное поведение в зависимости от какого-либо условия. Вспомним пример из домашней работы:
Спросите у пользователя его рост в сантиметрах и скажите на сколько целых вершков он ниже, чем Петр I.
Возможное решение:
user_hight = int(input('Введите свой рост в сантиметрах\\n'))
peter_hight = 203
delta = int((peter_hight - user_hight) // 4.445)
print(f"Петр I выше вас на {delta} вершков")
Но если вдруг пользователь выше двух метров, то мы получим отрицательную разницу. В таком случае логичнее сказать, что Петр ниже на Х вершков. Для таких случаев в питоне есть условный оператор if/else
Выглядит он следующим образом:
if Условие:
Блок инструкций 1
else:
Блок инструкций 2
Блок инструкций 1 будет выполнен, если Условие истинно. Если Условие ложно, будет выполнен Блок инструкций 2.
В случае с Петром мы могли бы написать так:
user_hight = int(input('Введите свой рост в сантиметрах\\n'))
peter_hight = 203
delta = int((peter_hight - user_hight) // 4.445)
if delta >= 0: # если разница неотрицательная, то
print(f"Петр I выше вас на {delta} вершков")
else: # иначе/если разница отрицательная
print(f"Петр I ниже вас на {-delta} вершков")
Внутри условий могут быть:
== < > !=
in
is
Также условие может включать логическое выражение с несколькими условиями с использованием and, or, not
.
# Выведем ошибку, если число не соответствует условию
x = int(input('Введите однозначное положительное число\\n'))
if 0 < x and x < 10:
print('Спасибо!')
else:
print('Что-то пошло не так')