Python да флаглар билан ишлаш

Флаг - бу фақат икки қийматни қабул қиладиган махсус ўзгарувчи: True ёки False. Флаглар ёрдамида бирор нарсанинг йўқлигини текширадиган масалаларни ечиш мумкин: масалан, рўйхатда аник қийматли элемент йўқлигини текшириш мумкин.

Куйидаги масалани ечайлик: сонлардан иборат рўйхат берилган, унинг барча элементлари mусбат эканлигини текшириш керак. Бунинг учун flag номли махсус ўзгарувчини киритамиз, унинг қиймати цикл бошланишидан олдин True бўлади. Ва цикл давомида манфий сон учраса, унинг қийматини 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

Бутун сон берилган. У туб сонми, яъни фақат бирга ва ўзигагина бўлинадими, текширинг.