Python conditionals#
Conditional statements give you a way to change the flow of a Python program depending on the result of a boolean expression.
Bolean expressions#
Let’s first see what are boolean expressions. Boolean expressions are Python expressions that return either True of False. The simplest ones are:
True
True
False
False
But here are some more:
1 > 2
False
25.0 <= 25.1
True
5 == 5
True
Or with variables:
x = 'This is a string.'
len(x) > 10
True
Here are a few things with strings:
x == 'This is a string.'
True
x == 'This is a st'
False
'This' < 'This is'
True
So, what can you put in a boolean expression? Well, anything that can be evaluated to either True or False. This is quite general, but very often we use the following building components:
>: greater than>=: greater than or equal to==: equal to<less than<=less than or equal tonotgives you the opposite of whatever boolean expression followsorTrue if any of the boolean expressions to the left or to the right are TrueandTrue if both of the boolean expressions to the left and to the right are True
You absolutely have to remember all these!!!
The simplest if-statement#
Now, let’s look at the simplest conditional statement. It’s syntax is as follows:
if <boolean_expression>:
# Expressions that run if the bolean_expression is True
That’s it. Let’s try it:
x = 'Sort string'
if len(x) <= 20:
print('The string x has less than 20 characters.')
The string x has less than 20 characters.
The following does not print anything for the default x because the boolean expression is False:
if not len(x) <= 20:
print('The string x does not have less than 20 characters.')
And here is a somewhat more complicated boolean expression:
if len(x) >= 10 and len(x) <= 30:
print('The string x have between 10 and 30 characters.')
The string x have between 10 and 30 characters.
Questions#
Change the string
xin the code block above so that nothing is printed in the firstifand something is printed in the second if.
Be careful of white spaces#
Note
In Python, the empty spaces below if are very important when you have multiple expressions.
Here is an example that works:
if len(x) <= 20:
print('The string x has less than 20 characters.')
print('And this is an additional line.')
The string x has less than 20 characters.
And this is an additional line.
Here is an example that doesn’t work because the white spaces are not aligned:
if len(x) <= 20:
print('The string x has less than 20 characters.')
print('And this is an additional line.')
File "<tokenize>", line 3
print('And this is an additional line.')
^
IndentationError: unindent does not match any outer indentation level
By the way, I am using four spaces below if’s. It doesn’t matter how many spaces you use as soon as you are consistent.
For example, here is the same code with just one space:
if len(x) <= 20:
print('The string x has less than 20 characters.')
print('And this is an additional line.')
The string x has less than 20 characters.
And this is an additional line.
The best practice (and what Jupyter is trying to do by default) is to use a tab or 4 white spaces.
The if-else statement#
Some times you want to test for a boolean expression and run something else if it is false.
You can do this with the if-else statement:
if <boolean_expression>:
# Expressions that run if the bolean_expression is True
else:
# Expressions n to run if the boolean_expression is False
Let’s try it:
x = 'Sort string'
if len(x) <= 20:
print('The string x has less than 20 characters.')
else:
print('The string x does not have less than 20 characters.')
The string x has less than 20 characters.
Questions#
Change
xin the code block above so that the expressions after else run.
The if-elif-else statement#
Sometimes you want to test for multiple boolean expressions.
You can do this using the if-elif-else statement:
if <boolean_expression>:
# Expressions that run if the bolean_expression is True
elif <other_boolean_expression>:
# Expressions that run if the other_bolean_expression is True
# if boolean_expression is False
else:
# Expressions n to run otherwise
An example:
x = 'Sort string'
if len(x) <= 20:
print('The string x has less than 20 characters.')
elif len(x) <= 30:
print('The string x has between than 21 and 30 characters.')
else:
print('The string x has more than 30 characters.')
The string x has less than 20 characters.
Note that you can have as many elif’s as you want and that else is always optional.
Questions#
Change the string
xin the above code block so that theelifexpression runs.Change the string
xin the above code block so that theelseexpression runs.Add one more
elifto test iflen(x) <= 40. Modify theprint()statements accordingly.