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 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
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')
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
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
else clause must always come at the end (or not at all).