Python do…while Loop Statement Emulation
Summary: in this tutorial, you’ll learn how to emulate the do...while loop statement in Python
Introduction to the do…while loop statement
If you have come from other programming languages such as JavaScript, Java, or C#, you’re already familiar with the do...while loop statement.
Unlike the while loop, the do...while loop statement executes at least one iteration. It checks the condition at the end of each iteration and executes a code block until the condition is False.
The following shows the pseudocode for the do...while loop in Python:
do
 # code block
 while conditionCode language: PHP (php)
Unfortunately, Python doesn’t support the do...while loop. However, you can use the while loop and a break statement to emulate the do...while loop statement.
First, specify the condition as True in the while loop like this:
while True:
 # code blockCode language: PHP (php)
This allows the code block to execute for the first time. However, since the condition is always True, it creates an indefinite loop. This is not what we expected.
Second, place a condition to break out of the while loop:
while True:
 # code block # break out of the loop
 if condition
 break
Code language: PHP (php)
In this syntax, the code block always executes at least one for the first time and the condition is checked at the end of each iteration.
Python do…while loop emulation example
Suppose that you need to develop a number guessing game with the following logic:
- First, generate a random number within a range e.g., 0 to 10.
- Then, repeatedly prompt users for entering a number. If the entered number is lower or higher than the random number, give users a hint. If the entered number equals the random number, the loop stops.
The following program uses a while loop to develop the number guessing game:
from random import randint# determine the range
 MIN = 0
 MAX = 10
# generate a secret number
 secret_number = randint(MIN, MAX)
# initialize the attempt
 attempt = 0
# The first attempt
 input_number = int(input(f'Enter a number between {MIN} and {MAX}:'))
 attempt += 1
if input_number > secret_number:
 print('It should be smaller.')
 elif input_number < secret_number:
 print('It should be bigger.')
 else:
 print(f'Bingo! {attempt} attempt(s)')
# From the second attempt
 while input_number != secret_number:
 input_number = int(input(f'Enter a number between {MIN} and {MAX}:'))
 attempt += 1
 if input_number > secret_number:
 print('It should be smaller.')
 elif input_number < secret_number:
 print('It should be bigger.')
 else:
 print(f'Bingo! {attempt} attempt(s)')
 
Code language: Python (python)
The following shows a sample run:
Enter a number between 0 and 10:5
 It should be bigger.
 Enter a number between 0 and 10:7
 It should be bigger.
 Enter a number between 0 and 10:8
 Bingo! 3 attempt(s)Code language: Shell Session (shell)
Since the while loop checks for the condition at the beginning of each iteration, it’s necessary to repeat the code that prompts for user input and checking the number twice, one before the loop and one inside the loop.
To avoid this duplicate code, you can use a while loop to emulate do while loop as follows:
from random import randint# determine the range
 MIN = 0
 MAX = 10
# generate a secret number
 secret_number = randint(MIN, MAX)
# initialize the attempt
 attempt = 0
while True:
 attempt += 1
 input_number = int(input(f'Enter a number between {MIN} and {MAX}:'))
 if input_number > secret_number:
 print('It should be smaller.')
 elif input_number < secret_number:
 print('It should be bigger.')
 else:
 print(f'Bingo! {attempt} attempt(s)')
 break
 
Code language: Python (python)
How it works.
- First, remove the code before the whileloop.
- Second, add the condition to stop the loop if the entered number equals the random number by using the breakstatement.
Summary
- Python doesn’t support the do-while loop statement.
- Use a whileloop and thebreakstatements to emulate ado...whileloop in Python