Conditional Statements#
A conditional statement is a multi-line statement that allows Python to choose among different alternatives based on the truth value of an expression. A conditional statement always begins with an if
header, which is a single line followed by an indented body. The body is only executed if the expression directly following if
(called the if expression) evaluates to a True
value. If the if expression evaluates to a False
value, then the body of the if is skipped.
password = 'unicorn'
if password == 'unicorn':
print('Password is correct')
Password is correct
This code prints the text Password is correct
if the string password
has the value of unicorn
. But if the string is not unicorn
then nothing is printed to the screen. We can change this behavior by using an elif
clause. elif
is shorthand in Python for “else if”.
password = 'bulldog'
if password == 'unicorn':
print('Password is correct')
elif password == 'bulldog':
print('Bulldogs go home!')
elif password != 'unicorn':
print('Incorrect password')
Bulldogs go home!
You can see that this if
statement first checks to see if password
has the value unicorn
. In this case, it does not, so it checks the first elif
clause. Since password
has the value bulldog
, this elif
clause resolves True
, it executes the code indented underneath it, so the phrase Bulldogs go home!
is printed to the screen. Notice that even though the second elif
clause is also true, bulldogs != unicorns
, it does not execute this code. Only the first elif
clause that evaluates True
is executed.
You may have noticed in this example that the second elif
clause acts as a catch all, since if neither of the first two statements run, then this last statement must be true. We could alternatively use an else
statement to accomplish the same result:
password = 'frogs'
if password == 'unicorn':
print('Password is correct')
elif password == 'bulldog':
print('Bulldogs go home!')
else:
print('Incorrect password')
Incorrect password
The General Form#
A conditional statement can also have multiple clauses with multiple bodies, and only one of those bodies can ever be executed. The general format of a multi-clause conditional statement appears below.
if <if expression>:
<if body>
elif <elif expression 0>:
<elif body 0>
elif <elif expression 1>:
<elif body 1>
...
else:
<else body>
There is always exactly one if
clause, but there can be any number of elif
clauses. Python will evaluate the if
and elif
expressions in the headers in order until one is found that is a True
value, then execute the corresponding body. The else
clause is optional. When an else
header is provided, its else
body is executed only if none of the header expressions of the previous clauses are True
. The else
clause must always come at the end (or not at all).