Python Control Statements
By Flavio Copes
Learn how control statements work in Python using if, elif, and else to make decisions based on a condition, plus the inline if/else for one-line choices.
Control statements let a Python program make decisions. Depending on whether a condition is True or False, we run one block of code or another. In Python we do so using if, elif and else.
The if statement
Here’s the basic form:
condition = True
if condition == True:
# do something
When the condition test resolves to True, like in the above case, its block gets executed.
Note that you don’t need to compare to True explicitly. Any expression that evaluates to a boolean works, and writing if condition: is the idiomatic way. A realistic example:
age = 17
if age >= 18:
print("You can vote")
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")
Indentation is not optional in Python. If you forget to indent the block, the program doesn’t run at all:
if age >= 18:
print("You can vote")
# IndentationError: expected an indented block
The fix is to indent every line of the block by the same amount. Be careful to not mix tabs and spaces, because Python rejects that too. Pick spaces and stick with them.
else and elif
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”.
Python checks the conditions in order, from top to bottom. The first one that’s True wins, and all the following checks are skipped.
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")
The inline if/else
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
This is handy when you assign a variable one of two values. For anything more complex than that, use the regular multi-line form. It’s easier to read.
Related posts about python: