Теорія:

Окрім уже відомих нам числового та рядкового типів даних у Python є логічний тип bool. Змінна типу bool може набувати одного з двох значень — True (Істина) або False (Хибність).
 
Якщо змінній надати значення True, це буде змінна типу bool:
>>> type(True)
<class 'bool'>
>>> a = True
>>> print(a)
True
Умова — це твердження, яке може бути істинним чи хибним.
Якщо твердження істинне, то вважається, що умова виконана. Перевірка умови повинна бути допустимою дією виконавця.
Умови в програмі записуються у вигляді логічних виразів.
Логічними є вирази, результатом яких є True або False.
Прості умови
Проста умова — це два вирази, з'єднані оператором порівняння. Простий логічний вираз (проста умова) утворюється за допомогою логічних операцій:
Знак операції
Значення
Логічний вираз
Результат
==
 Дорівнює
8 == 9
False
<
 Менше
8 < 9
True
>
 Більше
8 > 9
False
<=
 Менше або дорівнює
5 <= 2
False
>=
 Більше або дорівнює
5 >= 2
True
!=
 Не дорівнює
5 != 2
True
Приклад:
Змінній можна присвоїти значення логічного виразу, при цьому створюється змінна типу bool :
>> a=3<5
>>> a
True
Логічні операції працюють і у вікні консолі.
Приклад:
Виконай цей приклад, щоб ознайомитися з результатами обчислення логічних виразів:
>>> books = 10
>>> books == 5 # Перевірка, чи дорівнює books 5
False
>>> books > 1 # Перевірка, чи є books більшим за 1
True
>>> books >= 5
True
Складені умови
Складена умова — кілька простих умов, з'єднаних логічними операціями AND (логічне І, інакше — логічний добуток), OR (логічне АБО,  інакше — логічна сума), ХОR ((виключне АБО), NOT (логічне заперечення).
Складені умови записуються у вигляді логічних виразів, які повертають True чи False в залежності від значень аргументів.
умови.PNG
Логічну функцію прийнято задавати у вигляді таблиці істинності, вхідними значеннями якої є аргументи функції (значення змінних  для логічного виразу), а вихідними – відповідні значення логічної функції.
табл истинности.PNG
Проілюструємо виконання логічних операцій AND і OR за допомогою електричних схем:
реле.PNG
Обчислення виразів виконуються зліва направо у відповідності до пріоритету операцій:
1 – Not; 2 – And; 3 – Or.
Приклад:
Проаналізуй приклади складних умов.
not а <= 3 — рівнозначне виразу а > 3;
age >= 10 and age <= 18 — істинне тоді й тільки тоді, коли значення age розташовується в проміжку від 10 до 18 включно;
age < 10 or age > 18 — істинне для всіх значень age, які не належать проміжку від 10 до 18.
>>> books == 10 or books == 5 #перевірка, чи дорівнює books 10 або 5
True
>>> books == 10 and books == 5 #перевірка, чи дорівнює books одночасно 10 і 5
False
Нехай потрібно визначити, чи належить точка з координатою Х відрізку [0; 10]. У вигляді подвійної нерівності цю умову можна записати так: 0≤х≤10. У Python подвійна нерівність записується як складена умова:
 х >= 0  аnd х <= 10.
ось.PNGУмова істинна, якщо x>=0 i x<=10.

Задача 1. Дано три цілих числа: A, B, C. Скласти програму для перевірки істинності висловлювання: «Число B знаходиться між числами A і C». Необхідно врахувати обидва варіанти: A<C і A>C.
Програмний код:
a = int(input('a=?')
b = int(input('b=?')
c = int(input('c=?')
vidp = a<b and b<c or c<b and b<a
print ('Число B знаходиться мiж числами A i C -   ', vidp)
Приклад виконання програми:
a=?7
b=?5
c=?3
Число B знаходиться мiж числами A i C -    True