While циклі. 1-сабақ
Итерация
кодтың бір блогын қайта-қайта, мүмкін, бірнеше рет орындауды
білдіреді. Итерацияны жүзеге асыратын программалау
құрылымы цикл деп
аталады. Программалауда итерацияның анықталмаған және анықталған
екі түрі бар.
Анықталмаған итерациялар
Анықталған
итерациялар
While
циклі
Python
тіліндегі while операторы циклдерді құру үшін қолданылады.
Қарапайым while циклінің пішімі төменде
көрсетілген:
while
<expr>:
<statement(s)>
<statement(s)> қайта орындалатын блокты білдіреді,
көбіне цикл денесі деп аталады. Ол if операторындағыдай шегініспен
жазылады. Python-дағы барлық басқару құрылымы блоктарды анықтау
үшін шегіністерді пайдаланады. <expr> басқару
өрнегі әдетте цикл басталғанға дейін инициализацияланған, содан
кейін цикл денесінің бір жерінде өзгертілетін бір немесе бірнеше
айнымалы мәнді қамтиды. while циклі кездескен
кезде, <expr> алдымен логикалық контексте
есептеледі. Егер ол ақиқат болса, цикл денесі орындалады. Содан
кейін <expr> қайтадан тексеріледі және әлі де
ақиқат болса, дене қайтадан орындалады.
Бұл <expr> жалған болғанша жалғасады, содан
кейін программаның орындалуы цикл денесінен тыс бірінші операторға
өтеді.
1-мысал. Цикл
мысалын қарастырайық:
n =
5
while n > 0:
n –= 1
print(n)
Нәтижесі:
4
3
2
1
0
Бұл
мысалда:
-
Бастапқыда n 5-ке тең. 2-жолдағы while
операторының тақырыбындағы өрнек n > 0, ақиқат, сондықтан
цикл денесі орындалады. 3-жолдағы цикл денесінің ішінде
n 1-ден 4-ке дейін азаяды, содан кейін
шығарылады.
-
Циклдің
негізгі бөлігі аяқталған кезде программаның
орындалуы 2-жолдағы циклдің басына оралады және өрнек қайта
есептеледі. Бұл әлі де ақиқат, сондықтан дене қайтадан орындалады
және 3 шығады.
-
Бұл n 0-ге тең болғанша жалғасады. Осы
нүктеде өрнек тексерілгенде, ол жалған болып табылады және цикл
аяқталады. Орындау цикл денесінен кейінгі бірінші операторда
жалғасады, бірақ бұл жағдайда ол жоқ.
Кез келген
нәрсе болмас бұрын while циклінің басқару өрнегі алдымен
тексерілетінін ескеру қажет. Бастапқыда false мәні орнатылса, цикл
денесі ешқашан орындалмайды:
2-мысал.
n =
0
while n > 0:
n –= 1
print(n)
Жоғарыда келтірілген мысалда цикл кездескен кезде n мәні 0-ге тең болады. n > 0 басқару өрнегі әлдеқашан жалған, сондықтан циклдің денесі ешқашан орындалмайды.
3-мысал. Сандық салыстырудан гөрі тізім пайдаланылатын while циклі:
a = ['foo', 'bar',
'baz']
while a:
print(a.pop(-1))
Нәтижесі:
baz
bar
foo
Тізім логикалық контексте бағаланған кезде, онда элементтер бар болса, ол ақиқат болады, ал егер бос болса, жалған болады. Бұл мысалда элементтер бар болса, "a" ақиқат болады. Барлық элемент .pop() әдісі арқылы жойылғаннан кейін және тізім бос болған соң, "a" жалған болып табылады және цикл аяқталады.
4-мысал.
d = {'foo': 1, 'bar': 2,
'baz': 3}
while d:
print(d.popitem())
Нәтижесі:
('baz', 3)
('bar', 2)
('foo', 1)
.popitem() әдісі d ішінен бір кілт-мән жұбын жояды және оны кортеж ретінде қайтарады. Осылайша, while циклінің негізгі бөлігі мазмұнды d кортеждері ретінде көрсетеді.
Егер while циклінде көрсетілген шарт ешқашан жалған болмаса, while циклі ешқашан аяқталмайды және шексіз циклге айналады. while цикліндегі кез келген нөл емес мән әрқашан ақиқат шартты көрсетеді, ал нөл әрқашан жалған шартты көрсетеді.