Логічний тип
даних у мові Python
Часто в
реальному житті ми погоджуємося з будь-яким твердженням або заперечуємо його.
Наприклад, якщо вам скажуть, що сума чисел 3 і 5 більше 7, ви погодитеся,
скажете: «Так, це правда». Якщо ж хтось буде стверджувати, що сума трьох і
п'яти менше семи, то ви розціните таке твердження як помилкове.
Подібні фрази
припускають тільки два можливих відповіді - або "так", коли вираз
оцінюється як правда, істина, або "ні", коли твердження оцінюється як
помилкове, хибне. У програмуванні та математиці якщо результатом обчислення
виразу може бути лише істина або неправда, то такий вислів називається
логічним.
Логічні вирази
Крім
арифметичних операцій, зі школи нам відомі операції порівняння. Наприклад, 5 > 4. Це звучить як питання: «5 більше
4?». В даному випадку відповідь «так». В інших випадках відповіддю може бути
«ні» (наприклад, для 3 < 1).
Операції
порівняння не мають прив'язки до чисел. Порівнювати можна практично все що
завгодно, наприклад, рядки. Кожен раз, коли ми входимо на якийсь сайт,
всередині відбувається порівняння введених логіна і пароля з тими, які є в
базі. І тільки якщо вони є, нас пускають всередину.
Мови
програмування пристосували для своїх потреб всі математичні операції порівняння
практично в незмінному вигляді. Єдина серйозна відмінність - оператори рівності
і нерівності. В математиці для цього використовується звичайне одно =, але в
програмуванні таке зустрічається не часто. У багатьох мовах символ =
використовується для присвоювання значень змінним, тому для порівняння в Python
взяли подвійний значок ==.
Наприклад,
вираз 4 > 5 є логічним, так як його результатом є або правда, або неправда.
Вираз 4 + 5 не є логічним, так як результатом його виконання є число.
Раніше з
трьома типами даних - цілими і дійсними числами, а також рядками. Сьогодні
введемо четвертий - логічний тип даних (тип bool). Його також називають
булевим. У цього типу всього два можливих значення: True (правда) і False (неправда).
У
програмуванні False зазвичай прирівнюють до нуля, а True - до одиниці.
Логічні оператори
Список операцій порівняння:
- < —
менше
- <= — менше або дорівнює (не більше)
- > —
більше
- >= — більше або дорівнює (не менше)
- == — дорівнює
- != — не дорівнює
Ці операції
можна застосувати не тільки до чисел. Наприклад, за допомогою оператора
рівності можна порівняти рядки:
password ==
text - це порівняння ідентичності рядків, записаних в різних змінних.
Логічна
операція типу 5 > 4 або password == text - це вираз, і його результат -
спеціальне значення True («істина»)
або False («неправда»). Це новий для
нас тип даних - bool.
Поряд з
рядками (str) і цілими і дробовими числами, тип bool (логічний) - це один з
простих типів даних в Python.
Визначення:
• Логічний тип
(bool) - тип даних з двома можливими значеннями: True (істина) і False
(брехня).
Говорячи на
природній мові (наприклад, українською) ми позначаємо порівняння словами "дорівнює",
"більше", "менше". У мовах програмування використовуються
спеціальні знаки, подібні до тих, які використовуються в математиці: > (більше),
< (менше), >= (більше або дорівнює), <= (менше або дорівнює), ==
(дорівнює), != (не дорівнює).
Не плутайте
операцію присвоювання значення змінної, що позначається в мові Python одиничним
знаком "дорівнює", і операцію порівняння (два знаки "дорівнює").
Присвоєння і порівняння - різні операції.
Наприклад:
>>> a
= 10
>>> b
= 5
>>> a
+ b > 14
True
>>> a
< 14 - b
False
>>> a
<= b + 5
True
>>>
a != B
True
>>> a
== b
False
>>> c
= a == b
>>>
a, b, c
(10, 5, False)
В даному
прикладі вираз c = a == b складається з двох підвиразів. Спочатку відбувається
порівняння (==) змінних a і b. Після цього результат логічної операції
присвоюється змінної c. Вираз a, b, c просто виводить значення змінних на
екран.
Складні логічні вирази
Логічні вирази
типу Х >= 1023 є простими, так як в них виконується тільки одна логічна
операція. Однак, на практиці нерідко виникає необхідність в більш складних
виразах. Може знадобитися отримати відповіді "Так" або "Ні"
в залежності від результату виконання двох простих виразів. Наприклад, "на
вулиці йде сніг або дощ", "змінна news більше 12 і менше 20".
У таких
випадках використовуються спеціальні оператори, що об'єднують два і більше
простих логічних вирази. Широко використовуються два оператора:
-
логічне множення
(логічне І (and))
-
логічне додавання
(логічне АБО (or))
Щоб отримати
True при використанні оператора and, необхідно,
щоб результати обох простих виразів, які пов'язує цей оператор, були правдивими.
Якщо хоча б в одному випадку результатом буде False, то і все складне вираз
буде хибним.
Щоб отримати
True при використанні оператора or, необхідно,
щоб результат хоча б одного простого вираження, що входить до складу складного,
був правдивим. У разі використання оператора or
складний вираз стає хибним лише тоді, коли хибними є обидва його складові
прості вирази.
Припустимо,
змінній x було присвоєно значення 8 (x = 8), змінній y привласнили 13 (y = 13).
Логічний вираз y < 15 and x > 8 буде
виконуватися наступним чином. Спочатку виконається вираз y < 15.
Його результатом буде True. Потім
виконається вираз x > 8. Його
результатом буде False. Далі вираз зведеться до True and False, що поверне False.
>>>
x = 8
>>>
y = 13
>>>
y < 15 and x > 8
False
Якби ми
записали вираз так: x > 8 and y <15, то воно також повернуло б False.
Однак порівняння y < 15 не виконувалося б інтерпретатором, так як його нема
чого виконувати. Адже перше просте логічне вираження (x > 8) вже повернуло неправда,
яка, в разі оператора and, перетворює увесь вираз в неправду.
У випадку з
оператором or другий простий вираз перевіряється,
якщо перший повернув неправду, і не перевіряється, якщо вже перший повернуло
істину. Так як для істинності всього висловлювання досить єдиного True, неважливо по яку сторону від
оператора or.