3.5. if/else
StatementsΒΆ
Similar to other high-level languages, Python provides if/else
statements to support conditional branching. If the condition within the if
clause evaluates to True
, the if
block is executed, otherwise the else
block is executed (if it exists).
Python recognizes the keywords True
and False
to correspond to true and false boolean values.
An else
block is not mandatory,
and similar to for
loops, all statements within the if/else
blocks
should be indented. For example:
>>> a = [i for i in range(1,6)]
>>> for i in a:
... if i==5:
... print 'Key found: %d'%i
... else:
... print 'Key not found: %d'%i
...
Key not found: 1
Key not found: 2
Key not found: 3
Key not found: 4
Key found: 5
The if
and else
clauses were indented inside the for
loop, but the statements inside these blocks were indented again.
This is necessary to let Python know the intended code structure, as there is no explicit scoping
available via the use of curly braces ({}
) as supported in Java
or C++. The ==
operator above
denotes a conditional test, as opposed to the =
operator, which denotes
assignment. (Note that !=
denotes the “not equals” operator in Python.)
The print
statements above
use the %
operator to pass in an integer value, while the associated string had a
generic argument %d
inside it to specify that the value being passed in was an integer. Such a usage of print
statements is quite
common in Python and can also be used to pass in
multiple values of different types. We will see many more examples of this usage
in later sections. Python provides the in
operator to test membership
within a list. In fact, the in
operator can be used above to
remove the for
loop altogether.
>>> a = [i for i in range(1,6)]
>>> i = 5
>>> if i in a:
... print 'Key found: %d'%i
... else:
... print 'Key not found: %d'%i
...
Key found: 5
Similar to the in
operator, Python also
provides a not in
operator to test non-membership within a list. For example:
>>> a = [i for i in range(1,6)]
>>> a
[1, 2, 3, 4, 5]
>>> i = 10
>>> if i not in a:
... print 'Key %d not found'%i
... else:
... print 'Key %d found'%i
...
Key 10 not found
The not
keyword is an example of a logical operator in Python. Other logical
operators are specified by the and
and or
keywords
which can be used to check multiple conditions at the same time. The and
operator returns true if all the conditions being checked are
simultaneously true. The or
operator, on the other hand, returns true if any
one of the conditions being checked is true.
>>> i = 10
>>> i>=1 and i<=10
True
>>> i>=1 or i<=5
True
>>> i>=1 and i<=5
False
Often times one needs to check more than two possible situations, i.e.,
one if-else
branch is not sufficient and deeper nesting is required.
Python makes this possible using the if-elif-else
construct, where the last else
block can be skipped if desired. As soon as
Python finds one condition that is satisfied, it
skips the rest.
>>> i = 4
>>> if i<=1:
... print 'Value %d is less than or equal to 1'%i
... elif i>1 and i<=5:
... print 'Value %d is greater than 1 and less than or equal to 5'%i
... elif i>5 and i<=10:
... print 'Value %d is greater than 5 and less than or equal to 10'%i
... else:
... print 'Value %d is greater than 10'%i
...
Value 4 is greater than 1 and less than or equal to 5
So far, we have only worked with non-empty lists, but a list can be empty as
well. Python allows the name of a list to be used
in place of a condition in an if
statement. In this case, the result is True
if the list is not empty, otherwise the result is False
.
>>> a = []
>>> if a:
... print 'The list is non-empty'
... else:
... print 'The list is empty!'
...
The list is empty!