В старые времена с помощью флагов командовали войсками. Например, если флаг поднят — нужно атаковать, опущен — отступать.
В программировании “флагом” называют переменную булевого типа, т.е. в которой хранится либо True , либо False . Их так называют потому, что управление с их помощью похоже на флаги: есть всего 2 варианта, флаг или поднят, или опущен.
Например, вам интересно, есть ли человек на видео. Вы пишете функцию, которая проходит по кадрам видео и проверяет каждый из них. Если найдёт человека, то сообщит об этом:
def check_human_in_video(video): human_found = False for frame in video: if frame.has_human(): human_found = True print(human_found)
Обратите внимание, что True и False написаны без кавычек! Так и задумано — это не строки, а отдельный тип данных.
По умолчанию считаем, что человека нет, поэтому создаём флаг human_found = False . Далее для каждого кадра в видео проверяем, есть ли на нём человек — вызываем метод объекта frame.has_human() . Если человек найден, то меняем флаг на True . В конце выводим флаг с помощью print .
Регулярные выражения #4: флаги и проверки
Если ни на одном кадре человек не найдётся, то флаг так и останется False , потому что условие if frame.has_human() ни разу не сработает.
Если хоть на одном кадре есть человек, то при обработке этого кадра сработает условие if frame.has_human() и флаг станет True .
Как улучшить код
Теперь усовершенствуем код. Функция станет удобнее, если откажется от вывода на экран в пользу return .
def is_human_in_video(video): human_found = False for frame in video: if frame.has_human(): human_found = True return human_found print(is_human_in_video(video))
Следующим шагом ускорим работу функции. Сейчас код продолжит проверку, даже если встретит человека на самом первом кадре видео. Если кадров в video будет много, то проверка займёт время. Это даёт возможность для оптимизации. Прервём проверку сразу, как только станет ясен результат:
def is_human_in_video(video): human_found = False for frame in video: if frame.has_human(): human_found = True return human_found return human_found print(is_human_in_video(video))
Теперь заметно, что от переменной human_found можно избавиться, сделав код немного лаконичнее:
def is_human_in_video(video): for frame in video: if frame.has_human(): return True return False print(is_human_in_video(video))
Но и это ещё не всё. Флаги являются таким частым приёмом, что они попали в стандартную библиотеку Python. Код выше можно записать в одну строку:
def is_human_in_video(video): return any(frame.has_human() for frame in video)
- Про функцию any
- Что такое list comprehension?
Попробуйте бесплатные уроки по Python
Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.
Переходите на страницу учебных модулей «Девмана» и выбирайте тему.
Источник: dvmn.org
Переменные в JAVASCRIPT. Константы. Ключевые слова LET CONST VAR. Уроки JAVASCRIPT с нуля 2020
Какую функцию выполняет переменная flag в программе premier liga информатика
August 2021 1 8 Report
Какую функцию выполняет переменная Flag в программе? Ну понятно, что это логическая функция и тп. Но что конкретно он делает? Типа я не понимаю, как сформулировать ответ. Логическая переменная, которая изменяет свое значение с F на T, в зависимости от того, существует ли такая i в массиве? Или просто, что это логическая переменная, принимающая значения T, F?
Answers https://scholar.tips/kakuyu-funkciyu-vypolnyaet-peremennaya-flag-v-programme-nu-ponyatno-chto-eto-logiches.html» target=»_blank»]scholar.tips[/mask_link]
7. Пепременные – флаги
В примере с квадратным уравнением можно было бы предусмотреть еще одну ситуацию, когда a = 0 , то есть уравнение не квадратное. Тогда для передачи информации в следующий блок можно использовать либо две переменные логического типа, либо одну, но принимающую три значения (в качестве таковой можно использовать, например, переменную целого типа).
Задание 7. Переменные-флаги
1. Найдите все простые числа от 1 до 100. Используйте параметризацию, чтобы потом легко было искать простые числа в других диапазонах. Составной частью программы должен быть блок, проверяющий наличие делителей и записывающей эту информацию в переменную-флаг. 2. Пусть имеется корабль с 10-ю грузовыми отсеками. Максимальная грузоподъемность корабля 100 тонн.
Пока не заполнены все отсеки или не достигнута максимальная грузоподъемность, ваша программа должна запрашивать массу груза, помещаемого в очередной отсек. Как только дальнейшая загрузка станет невозможной, программа должна прекратить запрашивать массу новых грузов и вывести сообщение о причинах этого прекращения: «Трюм полон» или «Достигнута максимальная грузоподъемность». Запрос массы грузов и вывод результатов загрузки рассматривайте как отдельные блоки программы, информация между которыми передается с помощью переменной-флага. 3. Последовательность чисел, заданной формулой y n = sin x n , не содержит отрицательных элементов при малых значениях x . С точностью до 0.0001 определите, начиная с какого x отрицательные числа появляются среди первых 20-ти элементов этой последовательности. Используйте переменную-флаг для обозначения наличия или отсутствия отрицательных чисел в последовательности.
Источник: studfile.net