Python Interactive Guide - Step 2 Control Flow (1) - Conditional Statements (1): if Statements
- This course, Python Interactive Guide, is designed to help you learn the basics of Python programming through hands-on, interactive examples.
- The “Style Guide” sections introduce clean coding practices, mainly based on PEP8.
- You can run and experiment with every code example.
Feel free to try things out - reloading the page will reset everything.
In the previous lessons under “Step 1 Basic Syntax and Data Types,” we learned about data types and their operations.
From this lesson onwards, we’ll explore “Step 2 Control Flow” - methods to control the flow of program execution.
Step 2 Control Flow
Programs typically execute from top to bottom in sequence.
However, in real applications, there are processes we want to execute only when specific conditions are met, or processes we want to repeat.
The mechanisms that control such “program flow” are called control flow.
2.1. Conditional Statements
Conditional statements are control flow structures that execute specific processes only when certain conditions are met.
2.1.1. if Statement
The if statement executes the code block only when the specified condition is True.
- The indented block (above:
print("Adult")) is executed only when the condition expression (above:age >= 18) evaluates toTrue - If the condition expression evaluates to
False, that block is skipped
flowchart TD
START[Start] --> IF{"if age >= 18"}
%% Arrows from IF
IF -->|False| NEXT[Next process]
IF -->|True| IF_BLK["if block process\n(print('Adult'))"]
IF_BLK --> NEXT
linkStyle 1 stroke:red,stroke-width:2px;
linkStyle 2 stroke:green,stroke-width:2px;
- Add a line break immediately after the colon (
:) - Standard indentation is 4 spaces
- Add spaces before and after comparison operators (
<,<=, etc.) in condition expressions
In Python, indentation is a crucial element that determines code structure.
While many other programming languages use curly braces {} to represent blocks,
Python treats code with the same indentation level as one block.
This makes code appearance neat and readable, but indentation mistakes can also cause errors.
2.1.2. if-else Statement
Using the else clause, you can specify processes to execute when the condition is not met.
- When the condition expression is
True, theifblock is executed; whenFalse, theelseblock is executed - Either
iforelseis always executed
flowchart TD
START[Start] --> IF{"if age >= 18"}
%% Arrows from IF
IF -->|False| ELSE{"else"}
IF -->|True| IF_BLK["if block process\n(print('Adult'))"]
%% Arrows from ELSE
ELSE --> ELSE_BLK["else block process\n(print('Minor'))"]
ELSE_BLK --> NEXT[Next process]
IF_BLK --> NEXT
linkStyle 1 stroke:red,stroke-width:2px;
linkStyle 2 stroke:green,stroke-width:2px;
linkStyle 3 stroke:green,stroke-width:2px;
Set a temperature value in the variable temperature, and create a program that outputs “Hot” if it’s 25 degrees or higher,
otherwise outputs “Cool”.
Sample Answer
2.1.3. if-elif-else Statement
When you want to check multiple conditions sequentially, use elif (short for else if).
- Conditions are evaluated from top to bottom, and only the block of the first
Truecondition is executed - Even if multiple conditions become
True, only the firstTruecondition is adopted - The
elseblock is executed only when all conditions areFalse - The
elseclause is optional (if omitted, nothing is executed when all conditions areFalse)
flowchart TD
START["Start"] --> IF{"if [condition]"}
%% Arrows from IF
IF -->|False| ELIF{"elif [condition]"}
IF -->|True| IF_BLK["if block process"]
%% Arrows from ELIF
ELIF -->|False| ELIF2{"elif [condition2]"}
ELIF -->|True| ELIF_BLK["elif block process"]
%% Arrows from ELIF2
ELIF2 -->|False| ELSE{else}
ELIF2 -->|True| ELIF2_BLK["elif block(2) process"]
%% Arrows from ELSE
ELSE --> ELSE_BLK["else block process"]
%% Arrows to Next process
ELSE_BLK --> NEXT["Next process"]
ELIF2_BLK --> NEXT
ELIF_BLK --> NEXT
IF_BLK --> NEXT
%% Arrow color specification
linkStyle 1 stroke:red,stroke-width:2px
linkStyle 2 stroke:green,stroke-width:2px
linkStyle 3 stroke:red,stroke-width:2px
linkStyle 4 stroke:green,stroke-width:2px
linkStyle 5 stroke:red,stroke-width:2px
linkStyle 6 stroke:green,stroke-width:2px
linkStyle 7 stroke:green,stroke-width:2px
When using elif, the order of conditions is important.
If you place more restrictive conditions later, those conditions will be ignored.
BMI (Body Mass Index) is a value calculated by dividing weight (kg) by the square of height (m).
Create a program that determines the BMI category based on BMI value.
Set a BMI value in the variable bmi and output the BMI category according to the following conditions:
- Below 18.5: “Underweight”
- 18.5 to under 25: “Normal weight”
- 25 to under 30: “Obesity (Grade 1)”
- 30 and above: “Obesity (Grade 2 or higher)”
Sample Answer
2.1.4. Nested Conditional Statements
You can nest conditional statements inside other conditional statements.
- Inner conditional statements are evaluated only when the outer condition is
True - It’s important that indentation at each level is set correctly
flowchart TD
START[Start] --> IF{"if age >= 18"}
%% Outer if statement
IF -->|False| ELSE{"else"}
IF -->|True| IF_BLK["if block process\n(print('Adult'))"]
ELSE --> ELSE_OUTER["else block process\n(print('Minors cannot enter'))"]
%% Inner if statement
IF_BLK --> INNER_IF{"if has_id"}
INNER_IF -->|False| ELSE_INNER{"else"}
INNER_IF -->|True| INNER_TRUE["inner if block process\n(print('ID verified. Entry allowed'))"]
ELSE_INNER --> INNER_FALSE["inner else block process\n(print('No ID. Entry denied'))"]
%% To next process
ELSE_OUTER --> NEXT[Next process]
INNER_FALSE --> NEXT
INNER_TRUE --> NEXT
%% Arrow color specification
linkStyle 1 stroke:red,stroke-width:2px
linkStyle 2 stroke:green,stroke-width:2px
linkStyle 3 stroke:green,stroke-width:2px
linkStyle 5 stroke:red,stroke-width:2px
linkStyle 6 stroke:green,stroke-width:2px
linkStyle 7 stroke:green,stroke-width:2px
Try to keep code as flat as possible (PEP20 (The Zen of Python))
You need to implement a discount system for a cafe. The conditions are as follows:
- Members always get 10% discount
- Orders of $10 or more get an additional 5% discount
Rewrite the following code to make it flatter.