Флагҳо дар 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('---') # '---'.ро чоп мекунад
Рӯйхат дода шудааст. Санҷед, ки ҳамаи унсурҳои он рақамҳои мусбӣ мебошанд.
Рақами бутун дода шудааст. Санҷед, ки он сода аст ё не, яъне танҳо ба якум ва ба худи худ тақсим мешавад.