Логические основы¶
Справочник для самопроверки по булевой логике: значения, операции, приоритет, законы и таблицы истинности.
1. Логические основы алгоритмизации (роль булевой логики в условиях и циклах, логические значения)¶
Любой алгоритм управляет порядком действий через логические условия — выражения, результат которых либо истина (True), либо ложь (False). На этих двух логических значениях (тип bool в Python) держатся ветвления (if/elif/else) и циклы (while выполняется, пока условие истинно). По сути булева логика — это «да/нет»-арифметика, по которой программа принимает решения. В Python ложными также считаются «пустые» значения: 0, 0.0, "", [], {}, None, а почти всё остальное — истинным.
2. Логические операции (И/AND/∧, ИЛИ/OR/∨, НЕ/NOT/¬, исключающее ИЛИ/XOR)¶
И (AND, ∧) истинно, только когда истинны оба операнда; ИЛИ (OR, ∨) истинно, когда истинен хотя бы один; НЕ (NOT, ¬) инвертирует значение. Исключающее ИЛИ (XOR) истинно, когда операнды различны (ровно один истинен). В Python это ключевые слова and, or, not; XOR отдельного ключевого слова не имеет — для bool его роль выполняет != или побитовый ^.
| A | B | A and B | A or B | not A | A xor B |
|---|---|---|---|---|---|
| F | F | F | F | T | F |
| F | T | F | T | T | T |
| T | F | F | T | F | T |
| T | T | T | T | F | F |
3. Приоритет логических операций (NOT → AND → OR; роль скобок; короткое замыкание в Python)¶
Операции выполняются в порядке убывания приоритета: сначала not, затем and, затем or. Поэтому a or b and c читается как a or (b and c), а скобки позволяют явно задать нужный порядок и улучшают читаемость. В Python работает короткое замыкание (short-circuit): and не вычисляет правый операнд, если левый ложен, а or — если левый истинен. Благодаря этому выражения вроде x is not None and x.value > 0 безопасны и возвращают значение последнего вычисленного операнда, а не обязательно bool.
4. Законы логических операций (де Моргана, дистрибутивности, поглощения, коммутативности, ассоциативности)¶
Эти законы позволяют упрощать и эквивалентно переписывать условия:
- Коммутативность:
A ∧ B = B ∧ A,A ∨ B = B ∨ A. - Ассоциативность:
(A ∧ B) ∧ C = A ∧ (B ∧ C),(A ∨ B) ∨ C = A ∨ (B ∨ C). - Дистрибутивность:
A ∧ (B ∨ C) = (A ∧ B) ∨ (A ∧ C),A ∨ (B ∧ C) = (A ∨ B) ∧ (A ∨ C). - Поглощение:
A ∨ (A ∧ B) = A,A ∧ (A ∨ B) = A. - Законы де Моргана:
¬(A ∧ B) = ¬A ∨ ¬B,¬(A ∨ B) = ¬A ∧ ¬B— отрицание «раскрывает скобки», меняяandнаorи наоборот.
Особенно полезны законы де Моргана: они помогают избавиться от вложенного not и сделать условия читаемее, например заменить not (a and b) на not a or not b.
5. Таблицы истинности (что это, как строить; таблицы для AND, OR, NOT, XOR)¶
Таблица истинности — это перечень всех возможных комбинаций входных значений и соответствующего результата логического выражения. Для n переменных в ней 2ⁿ строк; строки удобно заполнять, перебирая значения как двоичные числа (FF, FT, TF, TT). Таблицы доказывают эквивалентность выражений и помогают проверять правильность условий.
| A | B | AND | OR | XOR |
|---|---|---|---|---|
| F | F | F | F | F |
| F | T | F | T | T |
| T | F | F | T | T |
| T | T | T | T | F |
| A | NOT A |
|---|---|
| F | T |
| T | F |