Python-дағы while циклі. Бұл қалай жұмыс істейді, пайдалану мысалдары

Циклдер кез келген тілдің негізгі құралдарының бірі болып табылады. Python-да екі негізгі цикл бар, олардың бірі while. Оны қарастырыңыз, сонымен қатар суретті жақсы түсіну үшін тағы біреуін қарастырыңыз. Шынында да, ұқсас нәрсемен салыстырғанда, кез келген материалды түсіну әлдеқайда оңай, солай емес пе?

Цикл туралы түсінік

Белгілі бір әрекетті бірнеше рет орындау қажет болғанда цикл қажет. Бұл өте қарапайым, өйткені шын мәнінде циклдарға арналған қолданбалардың ауқымы әлдеқайда кең. Python-да циклдердің екі негізгі түрі бар: for және while. Ең танымалы үшін.

Арнайы әрекеттерге қоса, кодтың әртүрлі бөліктерін белгілі бір нүктеге дейін айналдыра аласыз. Бұл белгілі бір рет саны немесе белгілі бір шарт шын болғанша болуы мүмкін.

Циклдердің түрлерін түсінуді бастамас бұрын және, атап айтқанда, біз әлі де итерацияның не екенін түсінуіміз керек. Бұл ағымдағы қолданбаны іске қосу ішіндегі ағымдағы цикл кезінде әрекеттің немесе әрекеттер тізбегінің бір қайталануы.

Цикл үшін

Біздің For циклі көптеген басқа тілдердегідей есептегіш емес. Оның міндеті – белгілі бір мән тізбегін санау. Бұл нені білдіреді? Бізде элементтер тізімі бар делік. Біріншіден, цикл бірінші, екінші, үшінші және т.б.

Python-дағы бұл циклдің артықшылығы мынада, циклден қашан шығу керектігін білу үшін элементтің индексін анықтаудың қажеті жоқ. Барлығы автоматты түрде орындалады.

>>> spisok = [10, 40, 20, 30]

>>> spisok элементі үшін:

… басып шығару (элемент + 2)

...

12

42

22

32

Біздің мысалда біз айнымалыны қолдандық элемент for командасынан кейін. Жалпы, атау кез келген болуы мүмкін. Мысалы, танымал белгі i. Және әрбір итерацияда бұл айнымалыға тізімнен біз сәйкес сөз деп атаған белгілі бір объект тағайындалады.

Біздің жағдайда тізім 10,40,20,30 сандарының тізбегі болып табылады. Әрбір итерацияда сәйкес мән айнымалыда пайда болады. Мысалы, цикл басталған бойда айнымалы элемент 10 мәні тағайындалады. Келесі итерацияда ондық 40 санына айналады, үшінші рет ол 20 санына айналады, ең соңында, циклдің соңғы итерациясында ол 30-ға айналады.

Циклдың аяқталу сигналы тізімдегі элементтердің соңы болып табылады.

Басқа бағдарламалау тілдеріндегі сияқты мәндердің классикалық санауын орындау үшін цикл қажет болса, бізге қажетті мәнге дейін натурал сандар тізбегі бар тізім жасау керек.

>>> spisok = [1,2,3,4,5]

Немесе функцияны пайдаланыңыз len(), тізімнің ұзақтығын анықтау. Бірақ бұл жағдайда циклды қолданған дұрыс әзірше, себебі айнымалыны пайдаланудың қажеті жоқ.

Тізімдегі мәндердің тізбегін өзгерту қажет болса, цикл үшін және міне, көмекке келеді. Ол үшін әрбір итерацияда тізімнің әрбір элементіне сәйкес мән тағайындалуы керек.

Ілмек

Циклден айырмашылығы үшін, ол реттілік, цикл мәндерін жай ғана қайталайды уақыт қолданулары көбірек. Циклдердің бұл түрінің атауы «әзірше» деп аударылады. Яғни, «дейін».

Бұл барлық бағдарламалау тілдерінде кездесетін әмбебап цикл. Және кейбір жағынан ол шартты операторға ұқсайды ию, ол белгілі бір шарттың орындалғанын тексеру үшін тексереді. Тек шартты оператордан айырмашылығы, уақыт тексеруді бір рет емес, әрбір итерацияда орындайды. Ал егер шарт жалған болса ғана цикл аяқталады және одан кейінгі команда орындалады. Қарапайым сөзбен айтқанда, егер ол жұмыс істейтін жағдай енді жарамсыз болса.

Егер біз циклды салсақ уақыт қарапайым түрде, бұл осындай схеманы қолдану арқылы жасалады.Python-дағы while циклі. Бұл қалай жұмыс істейді, пайдалану мысалдары

Бағдарламаның негізгі тармағы (циклден тыс жұмыс істейді) бұл суретте көк төртбұрыштармен бейнеленген. Бирюза циклдің денесін білдіреді. Өз кезегінде, ромб әрбір итерацияда тексерілетін шарт болып табылады.

Цикл уақыт екі ерекше жағдайға әкелуі мүмкін:

  1. Егер циклдің басында логикалық өрнек ақиқатқа қайтарылмаса, онда ол орындалу алдында аяқталып, жай ғана басталмайды. Жалпы алғанда, бұл жағдай қалыпты, өйткені белгілі бір жағдайларда қолданба цикл денесінде өрнектердің болуын қамтамасыз етпеуі мүмкін.
  2. Егер өрнек әрқашан дұрыс болса, бұл циклге әкелуі мүмкін. Яғни, циклдің шексіз айналдыруына. Сондықтан мұндай бағдарламаларда әрқашан циклден немесе программадан шығу операторы болуы керек. Дегенмен, бұл жағдай бағдарлама белгілі бір шарттың ақиқаттығын немесе жалғандығын анықтай алған жағдайда пайда болады. Егер ол мұны істей алмаса, бағдарламаның тоқтатылуымен қате қайтарылады. Немесе қатені өңдеуге болады, содан кейін ол орын алса, белгілі бір код орындалады.

Қатені өңдеудің көптеген нұсқалары болуы мүмкін. Мысалы, бағдарлама пайдаланушыдан деректерді дұрыс енгізуді сұрауы мүмкін. Сонымен, егер адам тек оң болуы мүмкін теріс санды көрсетсе немесе тек сандар болуы керек әріптерді енгізсе, бағдарлама бұл туралы айта алады.

While циклінің мысалдары

Міне, осы жағдайда қатені өңдейтін кодтың мысалы.

n = кіріс («Бүтін санды енгізіңіз: «) 

ал type(n) != int:

    Тырысу:

        n = int(n)

    ValueError қоспағанда:

        басып шығару («Қате жазба!»)

        n = кіріс («Бүтін санды енгізіңіз: «) 

егер n % 2 == 0:

    басып шығару («жұп»)

басқа:

    басып шығару («тақ»)

Python күрделі код конструкцияларын жариялау үшін қос нүктелерді қолданатынын есте сақтаңыз.

Жоғарыдағы кодта біз санның бүтін сан екенін тексеруіміз керек шарт ретінде анықтадық. Егер иә болса, онда жалған қайтарылады. Егер жоқ болса, онда рас.

Кодтың екінші бөлігінде оператор пайдаланылады if, бөлу операциясынан кейінгі қалдықты табу үшін % операторын қолдандық. Келесі қадам - ​​​​санның жұп екенін тексеру. Олай болмаса, қалғаны бұл жағдайда біреу. Тиісінше, сан тақ. 

Қарапайым тілмен айтқанда, жоғарыдағы код алдымен пайдаланушы енгізген жолдың сан екенін тексереді. Егер иә болса, онда екіге бөлудің қалдығы бар-жоғын тексеру үшін екінші тексеру жүргізіледі. Бірақ екінші блок пайдаланушы енгізген мән сандық болмайынша орындалмайды.

Яғни, шарт пайда болғанша цикл жүйелі түрде орындалады. Бұл жағдайда ол осылай жұмыс істейді. 

Яғни, сіз керісінше жүре аласыз: оқиға жалған болғанша белгілі бір әрекетті айналдырыңыз.

Кодты талдау

Енді осы кодтың қалай жұмыс істейтінін толығырақ қарастырайық. Ол үшін біз оны кезең-кезеңімен талдаймыз.

  1. Алдымен пайдаланушы жолды енгізеді, оны n айнымалысы қабылдайды. 
  2. Циклды пайдалану уақыт осы айнымалының түрі тексеріледі. Бірінші жазбада ол тең емес INT. Сондықтан сынақ нәтижесінде бұл шарттың ақиқат екені анықталды. Сондықтан цикл денесі енгізіледі.
  3. Оператордың көмегімен тырысу біз жолды санға түрлендіруге тырысамыз. Егер бұл орындалса, қате пайда болмайды. Тиісінше, оны өңдеудің қажеті жоқ. Сондықтан интерпретатор циклдің басына қайтады және тексеру нәтижелері бойынша оның бүтін санға айналғаны шығады. Ендеше 7-қадамға көшейік
  4. Егер түрлендіру сәтсіз болса, ValueError жіберіледі. Бұл жағдайда бағдарлама ағыны басқа өңдеушіге жіберіледі.
  5. Пайдаланушы n айнымалысына тағайындалған жаңа мәнді енгізеді.
  6. Аудармашы 2-қадамға оралып, қайта тексереді. Егер ол бүтін мән болса, 7-қадамға өтіңіз. Олай болмаса, 3-қадамға сәйкес түрлендіру әрекеті қайталанады.
  7. Оператордың көмегімен if Санды 2-ге бөлгеннен кейін қалдық бар-жоғын анықтайды. 
  8. Олай болмаса, «жұп» мәтіні қайтарылады.
  9. Олай болмаса, «тақ» мәтіні қайтарылады.

Енді осындай мысалды қарастырайық. Бұл цикл қанша рет өтетінін анықтауға тырысыңыз?

барлығы = 100 

i = 0

i < 5 болғанда:

    n = int(input())

    жалпы = жалпы — n

    i = i + 1 

басып шығару («қалған», барлығы)

Дұрыс жауап 5. Бастапқыда айнымалының мәні i – нөл. Интерпретатор айнымалы мәннің тең екенін тексереді i 4 немесе одан аз. Егер иә болса, мән қайтарылады. шынайы, және цикл сәйкесінше орындалады. Мәні бір есе артады.

Бірінші итерациядан кейін айнымалының мәні 1 болады. Тексеру орындалады және бағдарлама бұл санның қайтадан 5-тен аз екенін түсінеді. Сәйкесінше цикл денесі екінші рет орындалады. Қадамдар ұқсас болғандықтан, мән де біреуге артады, ал айнымалы енді 2-ге тең.

Бұл мән де бестен аз. Содан кейін цикл үшінші рет орындалады, айнымалыға қосылады i 1 және оған 3 мәні тағайындалады. Бұл тағы бестен аз. Осылайша, циклдің алтыншы итерациясына келеді, онда айнымалының мәні i 5-ке тең (біздің есімізде ол бастапқыда нөл болды). Тиісінше, бұл шарт сынақтан өтпейді және цикл автоматты түрде тоқтатылады және одан тыс болатын келесі қадамға (немесе келесі қадамдар қарастырылмаса, бағдарламаны тоқтату) көшу жүзеге асырылады.

Цикл қарама-қарсы бағытта да болуы мүмкін. Мұнда әрбір келесі итерацияда айнымалының ағымдағы мәнінен біреуі алынып тасталатын кодтың мысалы келтірілген. 

барлығы = 100 

жалпы > 0 болғанда:

    n = int(input())

    жалпы = жалпы — n 

басып шығару («Ресурс таусылды»)

Бұл бағдарлама не істейтінін болжап көріңіз! Мұны айнымалыда елестетіп көріңіз жалпы бағдарлама ресурсы туралы ақпарат сақталады. Әр жолы аудармашы ресурстың бар-жоғын тексереді. Олай болмаса, «Ресурс таусылды» мәтіні көрсетіледі және бағдарлама жабылады. Циклдің әрбір итерациясымен ресурс пайдаланушы көрсеткен санға азаяды.

Ал енді үй тапсырмасы. Айнымалы физикалық теріс болмайтындай етіп жоғарыдағы кодты өзгертіп көріңіз. 

4 Пікірлер

пікір қалдыру