Вложенный условный оператор
В блоки «если» и «иначе» могут входить любые другие операторы, в том числе и другие вложенные условные операторы; при этом слово else относится к ближайшему предыдущему if .
Пример
if A > 10:
if A > 100:
print("У вас очень много денег.")
else:
print("У вас достаточно денег.")
else:
print("У вас маловато денег.")
Жирным шрифтом выделен условный оператор, который находится внутри другого оператора if , поэтому он называется вложенный условный оператор. С помощью вложенного условного оператора можно реализовать выбор из нескольких вариантов, а не только из двух.
Можно вложенный оператор использовать и после слова else .
Пример
if A < 10:
print("У вас маловато денег.")
else:
if A > 100:
print("У вас очень много денег.")
else:
print("У вас достаточно денег.")
В таком случае, если после else необходимо проверить еще одно условие, то вместо оператора if , можно использовать " каскадное" ветвление с ключевым словом elif (сокращение от else - if ).
Пример
if A < 10:
print("У вас маловато денег.")
elif A > 100:
print("У вас очень много денег.")
else:
print("У вас достаточно денег.")
Обратите внимание на отступы во всех примерах. При использовании каскадного условия, все ключевые слова if-elif-else находятся на одном уровне.
При большом числе проверок, записанных с помощью каскадного условия, например, в цепочке if-elif-elif-... срабатывает первое истинное условие.
|
Сложные условия
Предыдущую задачу можно решить более коротким способом, используя сложные условия.
Давайте разберемся, что такое сложные условия.
Простейшие условия состоят из одного отношения (больше, меньше и т.п.) Но иногда необходимо объединение простых условий в более сложные, Например, на улице холодно и идет дождь. Два простых условия (на улице холодно), (на улице идет дождь) здесь связаны связкой И.
СЛОЖНОЕ УСЛОВИЕ - состоит из двух или нескольких простых отношений (условий), которые объединяются с помощью логических операций:
И - логическое умножение - на языке Python записывается как and ,
ИЛИ - логическое сложение - на языке Python записывается как or ,
НЕ - логическое отрицание -на языке Python записывается как not .
Работают эти операции следующим образом.
Логическая
операция |
Пример |
Значение |
Примечание |
and |
a and b |
Логическое И:
True , если оба операндна True |
Ленивый оператор
Если a = False , то значение b не вычисяется (и не проверяется).
Результат выражения сразу равно False . |
or |
a or b |
Логическое ИЛИ:
True , если хотя бы один из операндов True |
Ленивый оператор
Если a = True , то значение b не вычисяется (и не проверяется).
Результат выражения сразу равно True . |
not |
not a |
Логическое отрицание НЕ:
True , если операнд False и наоборот. |
следующие два условия равносильны: A>B и not (A<=B) |
Приоритет выполнения логических операций и отношений
- Операции в скобках
- Логические отношения >, <, >=, <=, ==, !=
- Операция НЕ
- Операция И
- Операция ИЛИ
Для изменения порядка действий используются круглые скобки.
Логические переменные
Во многих языках программирования есть возможность использовать переменные, которые хранят логические значения ("истина"/"ложь"). В Python такие переменные могут принимать значения True (истина) или False (ложь). Например, программа
a = True
b = False
print(a or b)
Выведет на экран True .
Логические переменные относятся к типу bool , названному в честь английского математика Джорджа Буля - создателя алгебры логики.
|
Вложенный условный оператор: когда развилок больше двух
Условный оператор в форме if...else используется когда необходимо реализовать две развилки. Что делать, если развилок больше, чем две? В этом случае можно использовать каскадные условия.
Каскадные условия в контексте программирования означают использование последовательности условных операторов if...elif...else , где каждое условие проверяется поочередно. Если условие if не выполняется (ложно), то проверяется следующее условие elif (если оно есть). Если оно также ложно, то выполняется блок кода после else .
Общая форма записи каскадных условий
if условие1:
# блок кода, который выполняется, если условие1 истинно
elif условие2:
# блок кода, который выполняется, если условие1 ложно, а условие2 истинно
... # блоков elif может быть сколько угодно
else:
# блок кода, который выполняется, если ни одно из условий не истинно
Обратите внимание: оператор с каскадными условиями может содержать более одного блока elif , но только один блок if и один блок else (если блок else не нужен, он может отсутствовать).
|