Работа с флагами в Python
Флаг - это специальная переменная, которая
может принимать только два значения: True
или False
. С помощью флагов можно
решать задачи, проверяющие отсутствие чего-либо:
к примеру, можно проверить, что в списке
нет элемента с определенным значением.
Давайте решим следующую задачу: дан список
с числами, нужно проверить, все ли элементы
в нем являются положительными. Для этого зададим
специальную переменную flag
,
которая до начала цикла будет истинна.
А при попадании в цикл отрицательного числа,
поменяем ей значение на False
. Для
того, чтобы узнать результат проверки,
выведем переменную flag
после цикла
в консоль:
lst = [1, 2, 3, 4, 5]
flag = True
for el in lst:
if el < 0:
flag = False
print(flag) # выведет True, поскольку все числа положительные
Хорошей практикой является назначение
для переменной с флагом
имени, отражающего заданное условие.
Давайте переименуем
flag
в isAllPositive
.
И для наглядности
изменим одно число из списка
на отрицательное:
lst = [1, 2, 3, -4, 5]
isAllPositive = True
for el in lst:
if el < 0:
isAllPositive = False
print(isAllPositive) # выведет False, поскольку есть отрицательное число
Если в перебираемом списке много значений
и нужно остановить цикл после
обнаружения первого отрицательного числа, то
следует применить инструкцию break
:
for el in lst:
if el < 0:
isAllPositive = False
break
При работе с флагами, чтобы узнать
результат выполнения цикла, можно
вывести не значение флага,
а произвольное сообщение с помощью
дополнительного if
.
Давайте перепишем предыдущий пример.
Если все элементы положительные,
то пусть выведется '+++'
, если нет -
'---'
:
for el in lst:
if el < 0:
isAllPositive = False
break
if isAllPositive:
print('+++')
else:
print('---') # выведет '---'
Дан список. Проверьте, что все его элементы являются положительными числами.
Дано целое число. Проверьте, является ли оно простым, то есть делится только на единицу и на само себя.