Else циклін басқару
Дүкенде керек затты іздеп жүрсің делік. Егер бар тауарды ТАПСАҢ — қуанасың да, кассаға барасың (циклді break-пен тоқтатасың). Ал егер БАРЛЫҚ сөрені қаратып шықсаң да таппасаң — «дүкенде жоқ екен» деген қорытынды жасайсың. Python-да бұған арнайы, БАСҚА тілдерде жоқ ерекшелік бар: else операторын ЦИКЛГЕ де қоюға болады!
Көптеген программалау тілдерінде (C++, Java) else тек if-пен ғана жұмыс істейді. Python бұл жағынан ерекше: else-ді for мен while циклдеріне де қосуға болады!
Циклдегі else-дің идеясы қарапайым: «цикл ТАБИҒИ ЖОЛМЕН, БҮЛІНБЕЙ (break-сіз) аяқталса — осы блокты орында». Бұл — «толық іздеп шықтым, бөгетсіз» дегенді білдіретін «қорытынды белгі».
for i in range(7): print(i) else: print('Shygys sany aiaktaldy')Талдау: цикл 0-ден 6-ға дейін ЕШБІР КЕДЕРГІСІЗ (break жоқ) толық орындалады. Барлық итерация аяқталған соң, else блогы іске қосылады.
Нәтиже: 0,1,2,3,4,5,6, Shygys sany aiaktaldy.
Ал енді ЕҢ МАҢЫЗДЫ ережеге көшейік — бұл тақырыптың «жүрегі»: Break циклде орындалса — else блогы МҮЛДЕМ ОРЫНДАЛМАЙДЫ!
Неге? Себебі break — циклді «күштеп», «мерзімінен бұрын» тоқтатады. Ал else тек «толық, кедергісіз аяқталу» белгісін білдіреді.
for i in range(10): if i == 5: break else: print(i) i = i+1 else: print('Shygys sany aiaktaldy')Талдау: i=0,1,2,3,4 — print орындалады (мұндағы «else» — IF-тің ішкі else-і, циклдің емес!). i=5 болғанда break іске қосылады. Цикл break АРҚЫЛЫ тоқтағандықтан, СЫРТҚЫ (циклдің) else блогы ОРЫНДАЛМАЙДЫ.
Жауабы: 0, 1, 2, 3, 4 (СОҢЫНДА «Shygys sany aiaktaldy» ЖОҚ!).
Ал continue ше? Ол else-ге ӘСЕР ЕТЕ МЕ? ЖАУАП: ЖОҚ! Continue тек БІР итерацияны өткізеді, БІРАҚ цикл ӨЗІ ЖАЛҒАСАДЫ ЖӘНЕ ТАБИҒИ АЯҚТАЛАДЫ (break болмаса). Сондықтан continue болса да, else БӘРІБІР орындалады.
for el in range(4): if el == 2: continue print(el) else: print('соңы')Талдау: el=0→print(0). el=1→print(1). el=2→continue (print ЖОҚ, бірақ цикл ЖАЛҒАСАДЫ). el=3→print(3). Цикл БАРЛЫҚ 4 итерацияны АЯҚТАДЫ (break ЖОҚ), сондықтан else орындалады.
Жауабы: 0, 1, 3, соңы.
| Жағдай | Else орындала ма? |
|---|---|
| Цикл толық аяқталды (break жоқ) | ИӘ |
| Циклде continue болды, бірақ break жоқ | ИӘ |
| Циклде break орындалды | ЖОҚ |
While/else де дәл сол логикамен жұмыс істейді — тек «табиғи аяқталу» шарты ЖАЛҒАН болғанда деп аталады:
i = 0 while i < 7: print(i) i = i + 1 else: print('Shygy')
While циклі i < 7 шарты ЖАЛҒАН болғанда (яғни i=7-де) ТАБИҒИ түрде тоқтайды — else орындалады: 0,1,2,3,4,5,6, Shygy.
do = True while do: print('орындаймыз') break do = False else: print('аяқтаймыз')Талдау: бірінші итерацияда «орындаймыз» шығады да, БІРДЕН break — цикл тоқтайды. Else МҮЛДЕМ орындалмайды.
Жауабы: тек бір рет «орындаймыз».
- Python-да for/while циклдеріне else қосуға болады — бұл басқа тілдерде жоқ ерекшелік.
- Else блогы цикл ТАБИҒИ (break-сіз) аяқталғанда орындалады.
- Break циклді тоқтатса, else МҮЛДЕМ орындалмайды.
- Continue болса да, else бәрібір орындалады.
- Практикалық қолданысы: «іздеу, таппау» есептері (цикл ІШІНДЕ break, ЦИКЛДЕН СОҢ else).