Skip to content

Python Boolean

Mastering Boolean Logic in Python

Boolean logic is a fundamental concept in programming that deals with truth values: TrueTrue and FalseFalse. In Python, the boolbool data type is used to represent Boolean values, and Boolean logic plays a crucial role in decision-making, flow control, and creating conditions for executing code. In this comprehensive guide, we’ll explore Boolean values, logical operators, and their applications in Python programming.

Basics of Boolean Values

In Python, the two Boolean values are TrueTrue and FalseFalse. They represent the binary concept of truth and falsehood, and they are the building blocks for logical operations.

booleans.py
is_python_fun = True
is_learning = False
booleans.py
is_python_fun = True
is_learning = False

Here, is_python_funis_python_fun is assigned the value TrueTrue, indicating that the statement “Python is fun” is true. Similarly, is_learningis_learning is assigned FalseFalse, indicating that the statement “I am learning Python” is false.

Logical Operators

Logical operators in Python are used to perform operations on Boolean values. The three primary logical operators are andand, oror, and notnot.

Diagram:

diagram logical operators mermaid
Truth outcomes for and, or, not

The full truth table for andand and oror:

aabba and ba and ba or ba or b
TrueTrueTrueTrue
TrueFalseFalseTrue
FalseTrueFalseTrue
FalseFalseFalseFalse

andand Operator

The andand operator returns TrueTrue if both operands are true; otherwise, it returns FalseFalse.

booleans.py
x = True
y = False
result = x and y
print(result)
booleans.py
x = True
y = False
result = x and y
print(result)

Output:

command
C:\Users\Your Name> python booleans.py
False
command
C:\Users\Your Name> python booleans.py
False

oror Operator

The oror operator returns TrueTrue if at least one of the operands is true; otherwise, it returns FalseFalse.

booleans.py
x = True
y = False
result = x or y
print(result)
booleans.py
x = True
y = False
result = x or y
print(result)

Output:

command
C:\Users\Your Name> python booleans.py
True
command
C:\Users\Your Name> python booleans.py
True

notnot Operator

The notnot operator returns the opposite of the operand. If the operand is TrueTrue, notnot returns FalseFalse; if the operand is FalseFalse, notnot returns TrueTrue.

booleans.py
x = True
result = not x 
print(result)
booleans.py
x = True
result = not x 
print(result)

Output:

command
C:\Users\Your Name> python booleans.py
False
command
C:\Users\Your Name> python booleans.py
False

Short-Circuit Evaluation

Python stops evaluating a logical expression as soon as the result is known. With andand, if the first operand is falsy the second is never checked; with oror, if the first is truthy the second is skipped. This is called short-circuiting.

short_circuit.py
def expensive():
    print("expensive() was called")
    return True
 
False and expensive()   # expensive() is NEVER called
True or expensive()     # expensive() is NEVER called
short_circuit.py
def expensive():
    print("expensive() was called")
    return True
 
False and expensive()   # expensive() is NEVER called
True or expensive()     # expensive() is NEVER called

A practical use is guarding against errors — the right side runs only when it is safe:

guard.py
name = ""
if name and name[0] == "A":   # name[0] only runs if name is non-empty
    print("Starts with A")
guard.py
name = ""
if name and name[0] == "A":   # name[0] only runs if name is non-empty
    print("Starts with A")

andand / oror Return Operands, Not Just Booleans

A subtle but useful fact: andand and oror return one of the actual operands, not necessarily TrueTrue/FalseFalse. oror returns the first truthy value; andand returns the first falsy value (or the last operand).

operands.py
print("" or "default")    # default   -> first truthy value
print("Alice" or "guest") # Alice     -> first truthy value
print(5 and 0 and 9)      # 0         -> first falsy value
operands.py
print("" or "default")    # default   -> first truthy value
print("Alice" or "guest") # Alice     -> first truthy value
print(5 and 0 and 9)      # 0         -> first falsy value

This powers the common “default value” idiom: username = entered_name or "Anonymous"username = entered_name or "Anonymous".

Comparison Operators

Comparison operators are used to compare values and return Boolean results. These operators include ==== (equal), !=!= (not equal), << (less than), >> (greater than), <=<= (less than or equal to), and >=>= (greater than or equal to).

booleans.py
a = 5
b = 10
result = a < b 
print(result)
booleans.py
a = 5
b = 10
result = a < b 
print(result)

Output:

command
C:\Users\Your Name> python booleans.py
True
command
C:\Users\Your Name> python booleans.py
True

Conditional Statements

Boolean values are frequently used in conditional statements, such as ifif, elifelif (else if), and elseelse, to control the flow of a program based on certain conditions.

booleans.py
temperature = 25
 
if temperature > 30:
    print("It's a hot day!")
elif 20 <= temperature <= 30:
    print("It's a pleasant day.")
else:
    print("It's a cold day.")
booleans.py
temperature = 25
 
if temperature > 30:
    print("It's a hot day!")
elif 20 <= temperature <= 30:
    print("It's a pleasant day.")
else:
    print("It's a cold day.")

Output:

command
C:\Users\Your Name> python booleans.py
It's a pleasant day.
command
C:\Users\Your Name> python booleans.py
It's a pleasant day.

In this example, the program checks the temperature and prints a message based on whether it’s hot, pleasant, or cold.

Boolean in Functions

Functions can also return Boolean values, making them versatile for various programming tasks. For example, a function can check if a number is even and return TrueTrue or FalseFalse accordingly.

booleans.py
def is_even(number):
    return number % 2 == 0
 
result = is_even(10)
print(result)
booleans.py
def is_even(number):
    return number % 2 == 0
 
result = is_even(10)
print(result)

Output:

command
C:\Users\Your Name> python booleans.py
True
command
C:\Users\Your Name> python booleans.py
True

Boolean in Iterations

Boolean values are frequently used in loop conditions. A whilewhile loop, for instance, continues executing as long as the condition is TrueTrue.

booleans.py
count = 0
while count < 5:
    print(f"Count is {count}")
    count += 1
booleans.py
count = 0
while count < 5:
    print(f"Count is {count}")
    count += 1

Output:

command
C:\Users\Your Name> python booleans.py
Count is 0
Count is 1
Count is 2
Count is 3
Count is 4
command
C:\Users\Your Name> python booleans.py
Count is 0
Count is 1
Count is 2
Count is 3
Count is 4

In this example, the loop continues printing the count as long as it is less than 5.

Boolean Casting

In Python, you can cast other data types to Boolean values. The bool()bool() function converts a value to a Boolean value, and it returns FalseFalse if the value is empty, 00, or NoneNone; otherwise, it returns TrueTrue.

booleans.py
print(bool("Hello"))  # True
print(bool(15))  # True
print(bool(["apple", "banana", "cherry"]))  # True
booleans.py
print(bool("Hello"))  # True
print(bool(15))  # True
print(bool(["apple", "banana", "cherry"]))  # True

Output:

command
C:\Users\Your Name> python booleans.py
True
True
True
command
C:\Users\Your Name> python booleans.py
True
True
True

booleans.py
print(bool(False))
print(bool(None))
print(bool(0))
print(bool(""))
print(bool(()))
print(bool([]))
print(bool({}))
booleans.py
print(bool(False))
print(bool(None))
print(bool(0))
print(bool(""))
print(bool(()))
print(bool([]))
print(bool({}))

Output:

command
C:\Users\Your Name> python booleans.py
False
False
False
False
False
False
False
command
C:\Users\Your Name> python booleans.py
False
False
False
False
False
False
False

Truthy and Falsy Values

Every Python object is either truthy or falsy when used in a boolean context (like an ifif). Only a small set of values are falsy; everything else is truthy.

Falsy valuesTruthy values
FalseFalse, NoneNoneAny non-zero number
00, 0.00.0, 0j0jAny non-empty string
"""" (empty string)Any non-empty list/tuple/dict/set
[][], ()(), {}{}, set()set()Most objects

This lets you write clean checks — if my_list:if my_list: instead of if len(my_list) > 0:if len(my_list) > 0:.

Booleans Are Integers

As noted earlier, boolbool is a subclass of intint: TrueTrue equals 11 and FalseFalse equals 00. This means you can do arithmetic with them, which is handy for counting:

bool_int.py
votes = [True, False, True, True, False]
print(sum(votes))      # 3  -> counts how many are True
print(True + True)     # 2
bool_int.py
votes = [True, False, True, True, False]
print(sum(votes))      # 3  -> counts how many are True
print(True + True)     # 2

Conclusion

Boolean logic is an integral part of Python programming, enabling developers to create conditions, make decisions, and control the flow of their code. Understanding Boolean values, logical operators, and their applications in conditional statements, functions, and loops is essential for writing clear, efficient, and effective Python code.


Try it: Boolean Exercises

Exercise 1 – Boolean Values and Comparisons

Exercise 2 – Logical Operators

Exercise 3 – Boolean in Conditions

As you delve deeper into Python programming, continue exploring the intricacies of Boolean logic, and leverage its power to create dynamic and responsive programs. For additional insights and practical examples, check out our tutorials on Python Central Hub!

If this helped you, consider buying me a coffee ☕

Buy me a coffee

Was this page helpful?

Let us know how we did