(Python) Вложенный условный оператор. Сложные условия


Вложенный условный оператор

В блоки «если» и «иначе» могут входить любые другие операторы, в том числе и другие вложенные условные операторы; при этом слово 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.

Операция И - требует одновременного выполнения двух условий:
  условие 1 and условие 2   - будет принимать истинное значение, только если оба простых условия истинны одновременно,
причем, если условие 1 ложно, то условие 2 проверяться не будет

Операция ИЛИ - требует выполнения хотя бы одного из условий
  условие 1 or  условие 2   - будет принимать ложное значение, только если оба простых условия ложны одновременно,
причем, если условие 1 истинно, то условие 2 проверяться не будет

Операция НЕ 
 not условие 1 - будет принимать ложное значение, если условие 1 истинно и наоборот
Например, следующие два условия равносильны:   A>B     и    not (A<=B)

 

Приоритет выполнения логических операций и отношений
  1. Операции в скобках
  2. Логические отношения >, <, >=, <=, ==, !=
  3. Операция НЕ
  4. Операция И
  5. Операция ИЛИ
Для изменения порядка действий используются круглые скобки.

 
Логические переменные
Во многих языках программирования есть возможность использовать переменные, которые хранят логические значения ("истина"/"ложь"). В Python такие переменные могут принимать значения True (истина) или False (ложь). Например, программа  
a = True
b = False
print(a or b)
Выведет на экран True.
Логические переменные относятся к типу bool, названному в честь английского математика Джорджа Буля - создателя алгебры логики.