Объяснение к уроку
После этого урока ты сможешь:
while, когда повторение зависит от изменяющегося состояния.break, когда цель найдена.continue.Используй while, когда программа должна повторять действия до тех пор, пока условие остаётся истинным:
while attempts < max_attempts:
...В отличие от цикла for, цикл while не обновляет своё управляющее состояние автоматически. Твой код должен изменять значение, используемое условием, иначе цикл может выполняться бесконечно.
break немедленно завершает весь цикл. Используй его, когда продолжать выполнение нет необходимости, например, после обнаружения работоспособного сервера.
continue пропускает оставшиеся инструкции в текущей итерации и возвращается к проверке условия цикла. Перед переходом к следующей итерации убедись, что необходимое обновление индекса или счётчика уже произошло; иначе цикл может повторять один и тот же элемент бесконечно.
Используй for для известного числового диапазона или прямого перебора значений. Используй while, когда точка остановки зависит от состояния, изменяющегося во время выполнения.
Обновление счётчика в конечном счёте делает условие ложным.
attempt = 1
while attempt <= 3:
print(f"Attempt {attempt}")
attempt += 1Вывод:
Attempt 1
Attempt 2
Attempt 3Без attempt += 1 этот цикл никогда бы не завершился.
break выходит из цикла, как только найден статус готовности.
statuses = ["error", "error", "ready"]
index = 0
while index < len(statuses):
status = statuses[index]
index += 1
if status == "ready":
print(f"Ready on check {index}")
breakВывод:
Ready on check 3После успеха последующие итерации не требуются.
continue пропускает печать для некорректного значения, но сохраняет работу цикла.
readings = [18, -1, 22]
index = 0
while index < len(readings):
reading = readings[index]
index += 1
if reading == -1:
continue
print(reading)Вывод:
18
22Индекс обновляется до continue, поэтому цикл продвигается вперёд.
continue и breakОдно условие пропускает непригодные входные данные; другое завершает обработку.
commands = ["", "status", "stop", "deploy"]
index = 0
while index < len(commands):
command = commands[index]
index += 1
if not command:
continue
if command == "stop":
break
print(command)Вывод:
statusПустая команда пропускается, а обработка завершается на stop.
| Потребность | Инструмент |
|---|---|
| Повторять, пока состояние остаётся валидным | while |
| Полностью выйти из цикла | break |
| Пропустить только текущую итерацию | continue |
| Избежать бесконечного цикла | Обновлять управляющее состояние |
break, когда нужно пропустить только один элемент.continue перед обязательным обновлением индекса.while для простого фиксированного диапазона, когда понятнее цикл for.