Работа с флагове в 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('---') # ще изведе '---'
Даден е списък. Проверете дали всички негови елементи са положителни числа.
Дадено е цяло число. Проверете дали то е просто, тоест се дели само на единица и на себе си.