Работа з флагікамі ў Python

Флагік - гэта спецыяльная зменная, якая можа прымаць толькі два значэнні: True або False. З дапамогай флагікаў можна вырашаць задачы, якія правяраюць адсутнасць чагосьці: напрыклад, можна праверыць, што ў спісе няма элемента з пэўным значэннем.

Давайце вырасім наступную задачу: дадзены спіс з лікамі, трэба праверыць, ці ўсе элементы ў ім з'яўляюцца дадатнымі. Для гэтага зададзім спецыяльную зменную flag, якая да пачатку цыклу будзе ісціна. А пры трапленні ў цыкл адмоўнага ліку, змянім ёй значэнне на False. Для таго, каб даведацца вынік праверкі, вывядзем зменную flag пасля цыклу ў кансоль:

pythonlst = [1, 2, 3, 4, 5]
flag = True

for el in lst:
  if el < 0:
    flag = False
    
print(flag) # выведзе True, паколькі ўсе лікі дадатныя

Добрай практыкай з'яўляецца прызначэнне для зменнай з флагікам імя, якое адлюстроўвае зададзеную ўмову. Давайце пераназовам flag у isAllPositive. І для нагляднасці змянім адзін лік са спісу на адмоўны:

pythonlst = [1, 2, 3, -4, 5]
isAllPositive = True

for el in lst:
  if el < 0:
    isAllPositive = False
    
print(isAllPositive) # выведзе False, паколькі ёсць адмоўны лік

Калі ў перабіраемым спісе шмат значэнняў і трэба спыніць цыкл пасля выяўлення першага адмоўнага ліку, то варта ўжыць інструкцыю break:

pythonfor el in lst:
  if el < 0:
    isAllPositive = False
    break

Пры работе з флагікамі, каб даведацца вынік выканання цыклу, можна вывесці не значэнне флагіка, а адвольнае паведамленне з дапамогай дадатковага if.

Давайце перапішам папярэдні прыклад. Калі ўсе элементы дадатныя, то хай вывядзецца '+++', калі не - '---':

pythonfor el in lst:
  if el < 0:
    isAllPositive = False
    break

if isAllPositive:
  print('+++')
else:
  print('---') # выведзе '---'
Задание 1

Дадзены спіс. Праверце, што ўсе яго элементы з'яўляюцца дадатнымі лікамі.

Задание 2

Дадзены цэлы лік. Праверце, ці з'яўляецца ён простым, гэта значыць дзеліцца толькі на адзінку і на само́га сябе.