← Все вопросы
Как выйти из цикла по флагу, а не сразу по break?
8
Иногда вижу код, где заводят переменную-флаг типа found = False, а потом проверяют её. Зачем так, если есть break? Когда флаг реально нужен?
3 ответа
14
Флаг нужен, когда после выхода из цикла надо знать, по какой причине вышли, и сделать что-то на основе этого:
found = False
for x in data:
if x == target:
found = True
break
if found:
print("нашли")
else:
print("нет такого")
Здесь флаг отвечает на вопрос «нашли или дошли до конца?». Кстати, ровно для этого случая в Python есть for ... else — блок else срабатывает, если break не случился, и флаг становится не нужен. Но флаг универсальнее: его можно проверять и в середине, и копить несколько состояний.
Руслан Петров Для простого поиска for-else чище, но многие про него не знают и флаг понятнее · 3 месяца назад
9
Часто флаг — это просто непонимание for-else или вынесения поиска в функцию с return. В функции вообще return заменяет и break, и флаг разом.
3
Зависит от задачи.
Ваш ответ
Войдите, чтобы ответить на вопрос.