Python – Decision Control: if, else, elif
By default, statements in the script are executed sequentially from the first to the last. If the processing logic requires so, the sequential flow can be altered in two ways:
- Conditional execution: a block of one or more statements will be executed if a certain expression is true.
- Repetitive execution: a block of one or more statements will be repetitively executed as long as a certain expression is true.
In this chapter you will learn the decision control if
, else
, elif
statements in Python.
The comparison and logical operators are useful in controlling flow of the program.
if Condition
Python uses the if
keyword to implement decision control. Python’s syntax for executing a block conditionally is as below:
if [boolean expression]: statement1 statement2 ... statementN
Any Boolean expression evaluating to True or False appears after the if
keyword. Use the :
symbol and press Enter after the expression to start a block with increased indent. One or more statements written with the same level of indent will be executed if
the Boolean expression evaluates to True.
To end the block, decrease the indentation. Subsequent statements after the block will be executed out of the if
condition.
The following example demonstrates the if
condition.
>>>> if 10<100:
… print(“10 is less than 100”)
In the above example, the expression 10<100
evalutes to True, so it will execute the block. The if
block starts from new line after :.
All the statements under the if
condition start with an increased indentation. Above, if
block contains only one statement.
10 is less than 100
Now, let’s take another example. Assume that we have to write a Python program that calculates the amount payable from price and quantity inputs by the user and applies a 10% discount if the amount exceeds 1000.
Calculation and application of the discount is to be done only if the amount is greater than 1000, hence, the process is placed in a block with increased indent, following the conditional expression.
The print() statement is written after the conditional block is over, hence, it will be executed if the expression is false (i.e. the amount is not greater than 1000), as well as after applying the discount if the expression is true (i.e. the amount is greater than 1000).
price=int(input("Enter Price: "))
qty=int(input("Enter Quantity: "))
amt=price*qty
if amt>1000:
print ("10% discount is applicable")
discount=amt*10/100
amt=amt-discount
print ("Amount payable: ",amt)
Two scenarios of running the code are shown below. In the first one, inputs for price and quantity are such that the amount is greater than 1000.
The payable amount after applying the discount will be displayed.
Enter Price: 100
Enter Quantity: 20
10% discount is applicable
Amount payable: 1800.0
In the second case, inputs are such that the expression doesn’t become true. Hence, the print statement will display the payable amount, which will not have a discount.
Enter Price: 10
Enter Quantity: 20
Amount payable: 200
else Condition
Along with the if
statement, the else
condition can be optionally used to define an alternate block of statements to be executed if the boolean expression in the if
condition is not true.
if [boolean expression]: statement1 statement2 ... statementN else: statement1 statement2 ... statementN
As mentioned before, the indented block starts after the :
symbol, after the boolean expression. It will get executed when the condition is true.
We have another block that should be executed when the if
condition is false.
First, complete the if
block by backspace and write else
, put add the :
symbol in front of the new block to begin it and add the required statements in the block.
De-dent the else
block and enter the statements that should be executed, irrespective of the boolean expression being true or false.
>>>> if 10>100:
… print(“10 is greater than 100”)
… else:
… print(“10 is less than 100”)
10 is less than 100
In the above example, the if condition 10>100
is False, so the Python will execute the else
block.
elif Condition
Use the elif
condition is used to include multiple conditional expressions between if and else
.
if [boolean expression]: [statements] elif [boolean expresion]: [statements] elif [boolean expresion]: [statements] elif [boolean expresion]: [statements] else: [statements]
The elif
block is executed if the specified condition is true.
>>>> x=10
>>>> if x==1:
… print(‘X is 1’)
… elif x==5:
… print(‘X is 5’)
… elif x==10:
… print(‘X is 10’)
… else:
… print(‘X is something else’)
X is 10
In the above example, multiple elif
conditions are applied between if and else
. Python will execute the elif
block whose expression evaluates to true.
If multiple elif
conditions become true, then the first elif
block will be executed.