Сложные логические условия: and, or, not в Python
Логические связки and, or, not, приоритет логических операций, принадлежность точки числовому отрезку, проверка существования треугольника.
В сложных программах условие часто состоит из нескольких взаимосвязанных утверждений. В Python логические операции записываются наглядными английскими словами:
• and (логическое И / конъюнкция) — составное условие истинно ТОЛЬКО тогда, когда ОБА простых условия слева и справа истинны;
Пример: if age >= 7 and age <= 18: print("Школьник")
• or (логическое ИЛИ / дизъюнкция) — составное условие истинно, если выполняется ХОТЯ БЫ ОДНО из условий (или оба сразу);
Пример: if day == "Суббота" or day == "Воскресенье": print("Выходной!")
• not (логическое НЕ / инверсия) — унарная операция, меняющая булево значение на противоположное: not True превращается в False, а not False — в True;
Пример: if not (x == 0): print("x не равен нулю").
and (Логическое И)
or (Логическое ИЛИ)
Поведение логических связок строго подчиняется законам математической логики (булевой алгебры):
Таблица для A and B:
• False and False = False
• False and True = False
• True and False = False
• True and True = True (истина только в этом случае!)
Таблица для A or B:
• False or False = False (ложь только в этом случае!)
• False or True = True
• True or False = True
• True or True = True
Таблица для not A:
• not False = True
• not True = False
Конъюнкция
Дизъюнкция
Когда в одном выражении встречаются различные операторы, Python вычисляет их в строгом иерархическом порядке:
1. Выражения в круглых скобках ( );
2. Арифметические операции (**, затем *, /, //, %, затем +, -);
3. Операции сравнения (==, !=, >, <, >=, <=);
4. Логическое отрицание not;
5. Логическое умножение and;
6. Логическое сложение or (наименьший приоритет).
Пример: Условие A or B and C эквивалентно A or (B and C). Если вам требуется сначала выполнить ИЛИ, обязательно ставьте скобки: (A or B) and C.
Приоритет: not > and > or
«Ленивые» вычисления
Python использует короткое замыкание (Short-circuit evaluation): если в A and B левая часть A ложна, правая часть B даже не вычисляется, так как итог гарантированно False.
Теорема о неравенстве треугольника: треугольник с длинами сторон a, b, c существует тогда и только тогда, когда сумма любых двух его сторон строго больше третьей стороны.
Запись на языке Python:
if (a + b > c) and (a + c > b) and (b + c > a):
print("Треугольник существует")
else:
print("Треугольник не существует")
