# Python Booleans

In this tutorial, we will learn about Python booleans with the help of examples.

A Boolean expression is an expression that evaluates to either `True` or `False`. For example,

``````result1 = True
result2 = False

print(result1) # True
print(result2) # False``````

Here, result1 represents `True` boolean value and result2 represents `False` boolean value.

## Python Comparison Operators

Python has a set of comparison operators that allow us to compare two values. If the comparison is right, we get `True` and if the comparison is wrong, we get `False`.

Let's see an example,

``````number = 5
print(number < 10) # True

number = 15
print(number < 10) # False``````

Here, the `<` comparison operator is used to compare whether number is less than 10 or not.

## List of Python Comparison Operators

Operator Meaning
Less than
> Greater than
== Is equal to
!= Not equal to
>= Greater than or equal to
Less than or equal to

### Examples: Comparison Operators

``````# comparison operators in action

number = 15
print(number > 10) # True

number = 10
print(number > 10) # False

number = 10
# equal to
print(number == 10) # True

number = 10.0
# comparing float and integer
print(number == 10) # True

number = '10'
# comparing string and integer
print(number == 10) # False

number = '10'
# not equal to
print(number != 10) # True

number = 10
# less than or equal to
print(number <= 10) # True

number = 10
# greater than or equal to
print(number >= 10) # True``````

Note: Comparison operators are used in decision-making and loops.

## Python Logical Operators

Python also has three logical operators that operate on the boolean values. Here's a list of the logical operators:

Logical Operator Meaning
`and` `True` if both operands are `True`
`or` `True` if either of the operands is `True`
`not` `True` if the operand is `False`

## and Operator in Python

If both of the expressions are `True`, then the result is `True`.

``````age = 22
gpa = 3.8

result = age >= 18 and gpa > 3.6
print(result) # True``````

However, if either of these expressions is `False`, the result is `False`.

``````age = 22
gpa = 3.8

print(age >= 18 and gpa > 3.9) # False``````

## or Operator in Python

If either of the expressions is `True`, then the result is `True`. If both expressions are `False`, only then the result is `False`.

``````age = 22
gpa = 3.8

print(age >= 18 or gpa > 3.9) # True

print(age <= 18 or gpa > 3.9) # False``````

## not Operator in Python

The `not` operator gives the complement of a given value:

1. If the value is `True`, it returns `False`.
2. If the value is `False`, it returns `True`.

Let's see an example,

``````result = True
print(result) # True

result = True
print(not result) # False``````

### Example: Python Booleans, Comparison and Logical Operators

``````language = 'Python'
print(language == 'python') # False

age = 18
print(age >= 18) # True
print(age > 18) # False

print(age >= 18 and language == 'Java') # False``````

Output

```False
True
False
False```

## Truthy and Falsy Values in Python

The values that evaluates to `True` are Truthy values and the values that evaluates to `False` are Falsy values.

In Python these values are considered falsy.

• `None`
• `False`
• 0, 0.0
• empty strings, lists, dictionaries etc.

All other values are considered truthy.

### Example: Truthy and Falsy

Suppose we need to find the smallest number between three numbers.

``````n1 = 60
n2 = 80
n3 = 50

if n1 < n2 and n3:
print(n1)
elif n2 < n1 and n3:
print(n2)
else:
print(n3)``````

Output

`60`

Here, we are getting 60 as the smallest number, which is wrong.

Can you find out where the error is?

Take a look at this code:

``````if n1 < n2 and n3:
print(n1)``````

Here, `n1 < n2` evaluates to `True`, and `n3` also evaluates to `True`. So the statement inside the `if` block is executed.

Instead here's what we should have written:

``````if n1 < n2 and n1 < n3:
print(n1)
elif n2 < n1 and n1 < n3:
print(n2)``````

Now we will get the actual smallest number i.e 50.