Лекция · 4.6

Else циклін басқару

Дүкенде керек затты іздеп жүрсің делік. Егер бар тауарды ТАПСАҢ — қуанасың да, кассаға барасың (циклді break-пен тоқтатасың). Ал егер БАРЛЫҚ сөрені қаратып шықсаң да таппасаң — «дүкенде жоқ екен» деген қорытынды жасайсың. Python-да бұған арнайы, БАСҚА тілдерде жоқ ерекшелік бар: else операторын ЦИКЛГЕ де қоюға болады!

Python-ның ерекшелігі

Көптеген программалау тілдерінде (C++, Java) else тек if-пен ғана жұмыс істейді. Python бұл жағынан ерекше: else-ді for мен while циклдеріне де қосуға болады!

Циклдегі else-дің идеясы қарапайым: «цикл ТАБИҒИ ЖОЛМЕН, БҮЛІНБЕЙ (break-сіз) аяқталса — осы блокты орында». Бұл — «толық іздеп шықтым, бөгетсіз» дегенді білдіретін «қорытынды белгі».

For/else
Мысал:
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 блогы МҮЛДЕМ ОРЫНДАЛМАЙДЫ!

Неге? Себебі 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» ЖОҚ!).
⚠️
ӨТЕ МАҢЫЗДЫ: бір кодта ЕКІ ТҮРЛІ else болуы мүмкін — біреуі IF-тің ішінде, екіншісі ЦИКЛДІҢ ӨЗІНДЕ. Шегінісіне қара: егер else тік for/while-мен БІРДЕЙ шегіныста тұрса — бұл цикл-else; if-тен кейін, тереңірек шегіныста тұрса — қарапайым if-else.
Continue else-ге әсер етпейді

Ал 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

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.

Break қатысса:
do = True
while do:
    print('орындаймыз')
    break
    do = False
else:
    print('аяқтаймыз')
Талдау: бірінші итерацияда «орындаймыз» шығады да, БІРДЕН break — цикл тоқтайды. Else МҮЛДЕМ орындалмайды.
Жауабы: тек бір рет «орындаймыз».
🏅
Аналогия: цикл-else — марафон финишіндегі медаль сияқты: жарысты ТОЛЫҚ, тоқтаусыз аяқтасаң (break жоқ) — медаль (else) аласың. Жарыс ортасында жарақаттанып тоқтасаң (break) — медаль жоқ, бірақ жарыс кезінде судан ішіп алу (continue) медальға кедергі жасамайды.
🎯 ҰБТ байланысы
Цикл-else бойынша тексерілетін дағды.
1
Кодта break бар ма, жоқ па — соны АЛДЫМЕН тап, содан кейін else орындала ма, жоқ па шеш.
2
Continue else-ге ӘСЕР ЕТПЕЙТІНІН есте ұста — тек break әсер етеді.
3
Екі түрлі else-ті (if-тің ішіндегі мен циклдің өзіндегі) шегінісіне қарап ажырат.
4
«Іздеу, таппау» логикасын кодтау: цикл ІШІНДЕ break (тапса), ЦИКЛДЕН КЕЙІН else (таппаса).
Сабақ қорытындысы
  • Python-да for/while циклдеріне else қосуға болады — бұл басқа тілдерде жоқ ерекшелік.
  • Else блогы цикл ТАБИҒИ (break-сіз) аяқталғанда орындалады.
  • Break циклді тоқтатса, else МҮЛДЕМ орындалмайды.
  • Continue болса да, else бәрібір орындалады.
  • Практикалық қолданысы: «іздеу, таппау» есептері (цикл ІШІНДЕ break, ЦИКЛДЕН СОҢ else).