← Все вопросы

Как выйти из цикла по флагу, а не сразу по break?

Задан 3 месяца назад340 просмотров3 ответа
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

Зависит от задачи.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект