Лекция · 4.4

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

Дүкенде кезекте тұрсың делік. Кезектегі әр адамды «қызмет көрсету керек пе?» деп тексересің. Кенеттен таныс адам шығып, «мен жай сұрақ қоямын, қызмет керек емес» дейді — оны өткізіп жібересің де, кезекті ЖАЛҒАСТЫРАСЫҢ. Кезектің өзі тоқтаған жоқ, тек БІР адам «өткізіп жіберілді». Дәл осы — Continue операторының логикасы: циклдің БІР итерациясын өткізіп жіберу, бірақ циклдің ӨЗІН тоқтатпау.

Continue логикасы

Циклде кейде БАРЛЫҚ итерацияны бірдей орындағың келмейді — кейбіреуін «өткізіп жібергің» келеді. Мысалы, 1-ден 100-ге дейінгі сандардан ТЕК тақтарын шығару керек болса, жұп сандарға тап болғанда не істейміз?

Анықтама
Continue (жалғастыру) — белгілі шарт орындалғанда ағымдағы итерацияны тоқтатып, циклдің КЕЛЕСІ итерациясына бірден өтетін нұсқаулық.

Синтаксисі қарапайым — жалғыз сөз: continue. Оны әдетте if шартының ІШІНЕ жазамыз:

for i in ...:
    if <шарт>:
        continue
    <қалған командалар>

Логикасы: шарт орындалса — continue іске қосылады, содан кейінгі командалар ӨТКІЗІЛІП ЖІБЕРІЛЕДІ, БІРАҚ цикл ӨЗІ ЖАЛҒАСА БЕРЕДІ — келесі итерацияға көшеді. Шарт орындалмаса — бәрі әдеттегідей орындалады.

Есіңде болсын: continue циклді ТОҚТАТПАЙДЫ, тек БІР итерацияны «қысқартады».

🏭
Аналогия: Continue — конвейердегі сапа бақылаушысы сияқты: браксыз өнім өтеді (тексеру жалғасады), ал бракты табады, оны БІР ҒАНА рет шеттетеді (continue), содан кейін конвейер ЖҰМЫСЫН ЖАЛҒАСТЫРАДЫ. Конвейердің ӨЗІ тоқтамайды.
Есеп: N мен M аралығындағы ТАҚ сандарды шығар.
N, M = map(int, input().split())
for i in range(N, M+1):
    if i % 2 == 0:
        continue
    print(i, end=' ')
Талдау: цикл N-нен M-ге дейін ӘРБІР санды қарайды. Жұп болса (i % 2 == 0), continue іске қосылады — print жолы ОРЫНДАЛМАЙДЫ, цикл КЕЛЕСІ i-ге өтеді.
Жауабы: N=14, M=25 болса → 15 17 19 21 23 25.
For мен while-де continue

Маңызды факт: continue ЕКІ циклде де (for және while) БІРДЕЙ жұмыс істейді. Дәл осы тақ сандар есебін while-мен де жазуға болады:

N, M = map(int, input().split())
N = N - 1
while N <= M:
    N = N + 1
    if N % 2 == 0:
        continue
    print(N, end=' ')

Нәтиже дәл СОЛ: 15 17 19 21 23 25. Қай циклді таңдау — есептің табиғатына байланысты (қайталану саны белгілі ме — for, белгісіз бе — while).

⚠️
ӨТЕ МАҢЫЗДЫ: санауышты арттыратын жол (мысалы, a += 1) continue-ДЕН БҰРЫН тұруы керек! Егер a += 1 жолы continue-ден КЕЙІН тұрса, шарт орындалғанда a ЕШҚАШАН артпайды — ШЕКСІЗ ЦИКЛ пайда болады.
a += 1        # алдымен арт
if a == 5:
    continue  # содан кейін ғана тексер
print(a)
For циклі және жолдар

Ал енді Python-дың таңғажайып мүмкіндігін ашайық: for циклі ТЕК сандармен жұмыс істемейді! Ол ЖОЛДАРМЕН (мәтінмен), тізімдермен де жұмыс істей алады.

for i in "Үстел":
    print(i)

Бұл цикл жолдың ӘРБІР ӘРПІ бойынша жүреді: «Ү», «с», «т», «е», «л» — бес рет.

Есеп: S жолындағы барлық «а»/«A» әрпін өшіріп, қалғанын шығар.
s = input('s=')
for i in s:
    if i == 'A' or i == 'a':
        continue
    print(i, end='')
Талдау: for циклі s жолының ӘРБІР әрпі бойынша жүреді. Әріп «a» немесе «A» болса — continue, print ЖҰМЫС ІСТЕМЕЙДІ.
Жауабы: «Aduyaaaakeraasd» → «duykersd».
Continue қашан қолданылады

Continue қашан қолданылады? Екі негізгі жағдай: 1) Сүзгіден өткізу — белгілі бір мәндерді өткізіп жіберу керек болғанда; 2) Циклді жеңілдету — continue-сыз кірістірілген if-тердің қабат-қабат болуы қажет болса, continue сол құрылымды жазықтандырады.

Мысалы, continue-сыз жазсақ та дұрыс жұмыс істейді: if i % 2 != 0: print(i, end=' '). Бірақ бірнеше шарт болса, тізбектелген if-тер кодты «сатылап» тереңдетеді. Continue сол «сатыны» жояды — код ЖАЗЫҚ, оқуға ЖЕҢІЛ болады.

🎯 ҰБТ байланысы
Continue бойынша тексерілетін дағды.
1
Кодтың нәтижесін «қолмен» орындап көру — қай сан/әріп «өткізіліп жіберілгенін» анық ажырат.
2
Continue циклді ТОҚТАТПАЙТЫНЫН, тек БІР итерацияны қысқартатынын есте ұста.
3
Санауышты арттыру жолының орнын (continue-ден бұрын/кейін) тексеру — шексіз цикл қаупін тап.
4
For циклінің жолдармен (мәтінмен) жұмыс істей алатынын білу.
Сабақ қорытындысы
  • Continue — циклдің БІР итерациясын өткізіп жіберетін, бірақ циклдің ӨЗІН жалғастыратын нұсқаулық.
  • For мен while-де бірдей жұмыс істейді, әдетте if шартының ішінде тұрады.
  • Ең маңызды ереже: санауышты арттыратын жол continue-ден БҰРЫН болуы керек.
  • Continue тек сандарды емес, жолдарды (мәтінді) сүзуге де қолданылады.