# 5. Conditionals and comparisons¶

## 5.1. Bools and comparison¶

In Pythom, bool type is object that is assumes only two values, either their are True or False:

```
In [1]:
```

```
x = True
y = False
type(x)
type(y)
```

```
Out[1]:
```

```
bool
```

We get a bool as a result when we check if the value of two variables is the same using == as in the examples below:

```
In [2]:
```

```
a = 312
x = (42 == 3) #does 42 equals 3?
y = (a == 311) #does the variable "a" equals 311?
z = (a == 312) #does the variable "a" equals 312?
x
y
z
a == 312.14
type(x)
type(y)
type(z)
type(a == 421.25)
```

```
Out[2]:
```

```
bool
```

Other possible comparisons are, for example, >, <, >= and <=:

```
In [3]:
```

```
41 > 33 #is 41 greater than 33?
41 > 41 #is 41 greater than 41
41 >= 41 #is 41 greater or equal to 41?
41 < 33 #is 41 less than 33?
41 < 41 #is 41 less than 41?
41 <= 41 #is 41 less or equal to 41?
```

```
Out[3]:
```

```
True
```

You can also combine the results of many comparisons using or and and:

```
In [4]:
```

```
51 > 132 or 31 < 54 #is either (51 greater than 132) or (31 less than 54)?
51 > 123.7 or 31 < 4 #is either (51 greater than 123.7) or (31 less than 4)?
151 > 133 and 141 < 54 #is both (151 greater than 133) and (141 less than 54)?
410 > 133 and 45.2 < 45.7 #is both (410 greater than 133) or (45.2 less than 45.7)?
```

```
Out[4]:
```

```
True
```

## 5.2. Ifs¶

The most simple conditional expression in Python is an if, written as below:

```
In [5]:
```

```
x = True
if x:
print("x is True")
```

```
x is True
```

Here, the code indented bellow the if clause will execute if and only if the condition evaluates to True. Try changing the value of x to False. Here’s another example:

```
In [6]:
```

```
x = 3.1
if x == 3.5:
print("x == 3.5 is True")
print("therefore, x equals 3.5")
```

There’s also the else’s clauses:

```
In [7]:
```

```
x = True
if x:
print("x is True")
else:
print("x is False")
y = False
if y:
print("y is True")
else:
print("y is False")
if 44 > 41:
print("44 is greater than 41 =]")
else:
print("44 is not greater than 41 =[")
```

```
x is True
y is False
44 is greater than 41 =]
```

And if elif’s clauses:

```
In [8]:
```

```
x = 1
if x == 1:
print("x is 1")
elif x == 0:
print("x is 0")
else:
print("x is neither 1 nor 0")
```

```
x is 1
```

## 5.3. Int and bools¶

You can directly place an int object as a condition in a loop and it will evaluate to True if and only if it’s different from 0:

```
In [9]:
```

```
x = 1
y = 0
z = 2
w = -13
if x:
print('x "evaluates" to True')
if y:
print('y "evaluates" to True')
if z:
print('z "evaluates" to True')
if w:
print('w "evaluates" to True')
```

```
x "evaluates" to True
z "evaluates" to True
w "evaluates" to True
```

## 5.4. Is keyword¶

Consider the following code:

```
In [10]:
```

```
x = [3, 2, 4]
y = [3, 2, 4]
v = [3, 4, 2]
w = [3, 1, 4]
z = x
if x == y:
print("x == y evaluates to True")
if x == v:
print("x == v evaluates to True")
if x == w:
print("x == w evaluates to True")
if x == z:
print("x == z evaluates to True")
if y == w:
print("y == w evaluates to True")
if y == z:
print("y == z evaluates to True")
```

```
x == y evaluates to True
x == z evaluates to True
y == z evaluates to True
```

Everything is as expected here. Two lists are equal if and only if they have the same elements and they are stored in the same order.

Consider however this:

```
In [11]:
```

```
x = [3, 2, 4]
y = [3, 2, 4]
v = [3, 4, 2]
w = [3, 1, 4]
z = x
if x is y:
print("x and y are the same object")
if x is v:
print("x and v are the same object")
if x is w:
print("x and w are the same object")
if x is z:
print("x and z are the same object")
if y is w:
print("y and w are the same object")
if y is z:
print("y and z are the same object")
```

```
x and z are the same object
```

As it implies, is will give you True only if the two variables reference the same object. So, it’s equivalent to comparing their id’s:

```
In [12]:
```

```
x = [3, 2, 4]
y = [3, 2, 4]
v = [3, 4, 2]
w = [3, 1, 4]
z = x
if id(x) == id(y):
print("x and y are the same object")
if id(x) == id(v):
print("x and v are the same object")
if id(x) == id(w):
print("x and w are the same object")
if id(x) == id(z):
print("x and z are the same object")
if id(y) == id(w):
print("y and w are the same object")
if id(y) == id(z):
print("y and z are the same object")
```

```
x and z are the same object
```