What’s interesting to do with booleans, and expressions that return a boolean in particular, is that we can make decisions and take different roads depending on their True or False value.

In Python we do so using the if statement:

condition = True

if condition == True:
# do something

When the condition test resolves to True, like in the above case, its block gets executed.

What is a block? A block is that part that is indented one level (4 spaces usually) on the right:

condition = True

if condition == True:
print("The condition")
print("was true")

The block can be formed by a single line, or multiple lines as well, and it ends when you move back to the previous indentation level:

condition = True

if condition == True:
print("The condition")
print("was true")

print("Outside of the if")

In combination with if you can have an else block, that’s executed if the condition test of if results to False:

condition = True

if condition == True:
print("The condition")
print("was True")
else:
print("The condition")
print("was False")

And you can have different linked if checks with elif, that’s executed if the previous check was False:

condition = True
name = "Roger"

if condition == True:
print("The condition")
print("was True")
elif name == "Roger":
print("Hello Roger")
else:
print("The condition")
print("was False")

The second block in this case is executed if condition is False, and the name variable value is “Roger”.

In a if statement you can have just one if and else checks, but multiple series of elif checks:

condition = True
name = "Roger"

if condition == True:
print("The condition")
print("was True")
elif name == "Roger":
print("Hello Roger")
elif name == "Syd":
print("Hello Syd")
elif name == "Flavio":
print("Hello Flavio")
else:
print("The condition")
print("was False")

if and else can also be used in an inline format, which lets us return a value or another based on a condition.

Example:

a = 2
result = 2 if a == 0 else 3
print(result) # 3