Как сделать цикл do while в Python
В этом уроке вы узнаете, как эмулировать оператор цикла do… while в Python подробно на примере.
Знакомство с оператором цикла do… while
Если вы работали с другими языками программирования, такими как JavaScript, Java или C#, вы уже знакомы с оператором цикла do… while.
В отличие от цикла while, оператор цикла do… while выполняет хотя бы одну итерацию. Он проверяет условие в конце каждой итерации и выполняет блок кода до тех пор, пока условие не станет ложным.
Ниже показан псевдокод цикла do… while в Python:
do # code block while condition
К сожалению, Python не поддерживает цикл do… while. Однако вы можете использовать цикл while и оператор Break для эмуляции оператора цикла do… while.
Сначала укажите условие как True в цикле while следующим образом:
while True: # code block
Это позволяет блоку кода выполниться в первый раз. Однако, поскольку условие всегда истинно, оно создает неопределенный цикл. Это не то, чего мы ожидали.
Во-вторых, поместите условие для выхода из цикла while:
while True: # code block # break out of the loop if condition break
В этом синтаксисе блок кода всегда выполняется хотя бы один в первый раз, и условие проверяется в конце каждой итерации.
Пример эмуляции цикла do… while в Python
Предположим, вам нужно разработать игру по угадыванию чисел со следующей логикой:
- Сначала сгенерируйте случайное число в диапазоне, например, от 0 до 10.
- Затем несколько раз предложите пользователям ввести номер. Если введенное число меньше или больше случайного числа, дайте пользователям подсказку. Если введенное число равно случайному числу, цикл останавливается.
Следующая программа использует цикл while для разработки игры по угадыванию чисел:
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)')
Ниже показан пример запуска:
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)
Поскольку цикл while проверяет условие в начале каждой итерации, необходимо повторить код, который запрашивает ввод пользователя и дважды проверяет число: один перед циклом и один внутри цикла.
Чтобы избежать дублирования кода, вы можете использовать цикл while для эмуляции цикла do while следующим образом:
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
Как это работает:
- Сначала удалите код перед циклом while.
- Во-вторых, добавьте условие остановки цикла, если введенное число равно случайному числу, используя оператор Break.
Заключение
- Python не поддерживает оператор цикла do- while.
- Используйте цикл while и операторы Break для эмуляции цикла do… while в Python.