Python да флаглар билан ишлаш
Флаг - бу фақат икки қийматни қабул қиладиган
махсус ўзгарувчи:
True ёки False. Флаглар
ёрдамида бирор нарсанинг йўқлигини текширадиган
масалаларни ечиш мумкин:
масалан, рўйхатда аник қийматли элемент
йўқлигини текшириш мумкин.
Куйидаги масалани ечайлик: сонлардан иборат
рўйхат берилган, унинг барча элементлари
mусбат эканлигини текшириш керак. Бунинг учун
flag номли махсус ўзгарувчини
киритамиз, унинг қиймати цикл бошланишидан олдин
True бўлади. Ва
цикл давомида манфий сон учраса, унинг қийматини
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('---') # '---' ни чиқаради
Рўйхат берилган. Унинг барча элементлари мусбат сонлар эканлигини текширинг.
Бутун сон берилган. У туб сонми, яъни фақат бирга ва ўзигагина бўлинадими, текширинг.