Цикла do-while в Python нет — в отличие от C, Java или JavaScript. Если ты ищешь, как в Python выполнить тело цикла хотя бы один раз, а условие проверить в конце, ответ короткий: это делают через while True с проверкой выхода в конце тела. Разберём, почему так и как это писать правильно.
Коротко
Do-while в Python эмулируют так: while True, тело выполняется, а в конце стоит if условие_выхода: break. Тело гарантированно отрабатывает минимум один раз, а решение о повторе принимается после него — ровно то, что даёт do-while в других языках.
Пользователь вводит: нет
while True:
answer = input("Повторить? (да/нет): ")
if answer != "да":
breakПочему в Python нет do-while
Это осознанное решение авторов языка, а не недоработка. Философия Python — «должен быть один очевидный способ» делать вещи. Отдельная конструкция с постусловием дублировала бы обычный while, но с менее очевидным потоком (условие внизу читается хуже). Поэтому оставили один цикл while с условием сверху, а редкий случай «сделать хотя бы раз» решается явным break.
Чем заменить: while True и break
Классический сценарий do-while — проверка ввода: сначала нужно что-то спросить, а потом решить, повторять ли. С обычным while пришлось бы заводить переменную заранее, с while True — нет.
Пользователь вводит: абв, 25
while True:
age = input("Сколько тебе лет? ")
if age.isdigit():
print(f"Возраст принят: {age}")
break
print("Нужно число, попробуй ещё раз")Нужно число, попробуй ещё раз Возраст принят: 25
Тело выполняется сразу, без предварительной проверки, и повторяется, пока ввод не станет корректным. Про сам оператор break и устройство циклов — в гайде Циклы в Python: for, while, break и continue.
Чем это отличается от обычного while
Обычный while проверяет условие до тела — и если оно сразу ложно, тело не выполнится ни разу. Do-while-паттерн через while True гарантирует, что тело отработает хотя бы один раз, потому что проверка стоит после него. Именно в этом вся разница между «условие сверху» и «условие снизу». Как строятся сами условия — в гайде if, elif и else в Python: условия с примерами.
Когда do-while-паттерн не нужен
Если проверку логично сделать до тела — используй обычный while условие:, он читается проще. Паттерн с while True и break оправдан только там, где действие обязано произойти хотя бы раз перед проверкой: запрос ввода, первая попытка подключения, показ меню. Не применяй его там, где обычного цикла достаточно.
Короткие ответы на вопросы
Есть ли в Python цикл do-while?
Нет, отдельной конструкции do-while в Python не существует. Её поведение воспроизводят через while True и break в конце тела.
Как выполнить цикл хотя бы один раз?
Поставь while True, помести тело внутрь, а проверку выхода — в конце: if условие: break. Тело гарантированно выполнится минимум раз до первой проверки.
Чем while True лучше обычного while здесь?
Не нужно заводить и «подготавливать» переменную условия до цикла. Тело выполняется сразу, а решение о повторе принимается по свежим данным внутри цикла.
Кот-наставник— Пришёл из C или Java и ищешь do-while? В Python его роль играет
while Trueсbreakв конце тела.— Но не злоупотребляй: если условие логично проверить до действия — бери обычный
while, он честнее и читаемее.
Циклы понятнее, когда пишешь их сам
На SkillPy ты собираешь циклы руками, а AI-наставник подсказывает, где нужен while с условием сверху, а где — while True с выходом через break. Он понимает твой код, а не сверяет с шаблоном.
