Boolean Data in Python

Let's dive into the world of boolean data in Python. This topic may seem simple, but it's incredibly important — after all, it's with boolean values that your programs will make decisions! 🧠

What is boolean data? 🤔

In everyday life, we often ask questions with "yes" or "no" answers.
For example: "Is it raining today?", "Do you like pizza?", "Is 2 + 2 = 5?".

In Python, there's a special data type for such answers — bool, which can only take two values:

  • True (truth, "yes") ✅
  • False (falsehood, "no") ❌
Python 3.13
# Creating boolean variables
>>> is_raining = True  # Yes, it's raining
>>> likes_pizza = True  # Yes, I like pizza

>>> print(type(is_raining))  # <class 'bool'>
<class 'bool'>

💡 Important: True and False are always written with a capital letter. If you write true or false, Python won't understand and will raise an error!

Boolean operators: how to combine conditions 🧩

In life, we often combine multiple conditions.
For example: "I'll go to the beach if it's sunny AND warm" or "I'll buy this phone if it's beautiful OR inexpensive".

Python gives us three main logical operators:

1. The and operator (logical AND)

Returns True only if both values are true:

Python 3.13
>>> sunny = True  # It's sunny
>>> warm = True   # It's warm

# I'll go to the beach if it's sunny AND warm
>>> going_to_beach = sunny and warm
>>> print(f"Sunny: {sunny}, Warm: {warm}")
>>> print(f"Going to the beach? {going_to_beach}")
Sunny: True, Warm: True
Going to the beach? True
# What if the weather changes? >>> warm = False # It got cold >>> going_to_beach = sunny and warm >>> print(f"Sunny: {sunny}, Warm: {warm}") >>> print(f"Going to the beach? {going_to_beach}")
Sunny: True, Warm: False
Going to the beach? False

2. The or operator (logical OR)

Returns True if at least one value is true:

Python 3.13
>>> phone_is_beautiful = True   # The phone is beautiful
>>> phone_is_cheap = False      # But not cheap

# I'll buy the phone if it's beautiful OR inexpensive
>>> will_buy_phone = phone_is_beautiful or phone_is_cheap
>>> print(f"Phone is beautiful: {phone_is_beautiful}, Phone is cheap: {phone_is_cheap}")
>>> print(f"Will buy the phone? {will_buy_phone}")
Phone is beautiful: True, Phone is cheap: False
Will buy the phone? True

Truth table for the or operator:

Python 3.13
>>> print("True or True =", True or True)
True or True = True
>>> print("True or False =", True or False)
True or False = True
>>> print("False or True =", False or True)
False or True = True
>>> print("False or False =", False or False)
False or False = False

3. The not operator (logical NOT)

Inverts the value: True becomes False, and vice versa:

Python 3.13
>>> have_homework = True
>>> print(f"I have homework: {have_homework}")
I have homework: True
>>> print(f"I DON'T have homework: {not have_homework}")
I DON'T have homework: False
# Another example: if it's not raining, we go for a walk >>> is_raining = False >>> going_for_a_walk = not is_raining >>> print(f"Is it raining? {is_raining}")
Is it raining? False
>>> print(f"Going for a walk? {going_for_a_walk}")
Going for a walk? True

Comparing values 🔍

Boolean values often appear as a result of comparison:

Python 3.13
# Comparing numbers
>>> my_age = 25
>>> friend_age = 30

>>> print(f"My age: {my_age}, friend's age: {friend_age}")
My age: 25, friend's age: 30
>>> print(f"Our ages are the same? {my_age == friend_age}")
Our ages are the same? False
>>> print(f"Our ages are different? {my_age != friend_age}")
Our ages are different? True
>>> print(f"Am I younger? {my_age < friend_age}")
Am I younger? True
>>> print(f"Am I older? {my_age > friend_age}")
Am I older? False
# Comparing strings (alphabetically) >>> print("String comparison:")
String comparison:
>>> print(f"'apple' < 'banana': {'apple' < 'banana'}")
'apple' < 'banana': True
>>> print(f"'python' == 'Python': {'python' == 'Python'}")
'python' == 'Python': False
# Comparing lists >>> my_scores = [90, 85, 95] >>> friend_scores = [90, 85, 95] # Same list, but different object >>> same_list = my_scores # The same object >>> print("List comparison:")
List comparison:
>>> print(f"Contents the same? {my_scores == friend_scores}")
Contents the same? True
>>> print(f"Is it the same object? {my_scores is friend_scores}")
Is it the same object? False
>>> print(f"Is same_list the same object as my_scores? {my_scores is same_list}")
Is same_list the same object as my_scores? True

Operator precedence: what gets calculated first? 📊

Operators are executed in the following order (from highest to lowest):

  1. not (highest priority)
  2. and
  3. or (lowest priority)
Python 3.13
# Example with priorities
>>> has_ticket = True
>>> has_passport = False
>>> has_visa = True

>>> print(f"Have ticket: {has_ticket}")
Have ticket: True
>>> print(f"Have passport: {has_passport}")
Have passport: False
>>> print(f"Have visa: {has_visa}")
Have visa: True
# Can we travel abroad? # Need a ticket AND (passport OR visa) >>> can_travel = has_ticket and (has_passport or has_visa) >>> print("\nCan we travel abroad?")
Can we travel abroad?
>>> print(f"has_ticket and (has_passport or has_visa) = {can_travel}")
has_ticket and (has_passport or has_visa) = True
# Let's break down the calculation step by step: >>> step1 = has_passport or has_visa # First, the expression in parentheses is calculated >>> print(f"\nStep 1: has_passport or has_visa = {step1}")
Step 1: has_passport or has_visa = True
>>> step2 = has_ticket and step1 # Then the and operator is applied >>> print(f"Step 2: has_ticket and (result of step 1) = {step2}")
Step 2: has_ticket and (result of step 1) = True

💡 Tip: If you're unsure about the order of execution, use parentheses! They make the code clearer and precisely control the order of calculations.

Converting to boolean type: what counts as true? 🔄

The bool function

Python can convert any value to a boolean type:

Python 3.13
print(bool(100))
True
print(bool(0))
False
print(bool("Hello"))
True
print(bool(""))
False

What counts as true and false? 🤔

In Python, most values are considered true (True).

Only the following are considered false (False):

  • False (the logical "no")
  • None (absence of value)
  • Zeros: 0, 0.0, 0j
  • Empty containers: "", (), [], {}
Python 3.13
# Examples in conditions
money = 0
if money:
    print("I have money!")
else:
    print("My wallet is empty :(")  # This will be printed

name = "Alex"
if name:
    print(f"Hello, {name}!")  # This will be printed
else:
    print("Hello, stranger!")

Understanding check 🎯

Let's check how well you've understood the material:

What will the following expression return?

Python 3.13
result = (False or True) and not (False and True or True)

Now you know how boolean data works in Python. Although they can only take two values — True and False, their importance in programming cannot be overstated.


We are in touch with you
English