дар ҳоле ки ҳалқа дар Python. Чӣ тавр он кор мекунад, мисолҳои истифода

Доираҳо яке аз воситаҳои асосии ҳама забонҳо мебошанд. Дар Python ду ҳалқаи асосӣ вуҷуд дорад, ки яке аз онҳо while мебошад. Онро баррасӣ кунед ва инчунин барои беҳтар фаҳмидани расм, як бори дигар. Воқеан, дар муқоиса бо чизи монанд, фаҳмидани ҳама гуна мавод хеле осонтар аст, ҳамин тавр не?

Консепсияи давра

Давра вақте лозим аст, ки як амали муайян чанд маротиба иҷро карда шавад. Ин хеле содда аст, зеро дар асл доираи барномаҳо барои давраҳо хеле васеътар аст. Дар Python ду намуди асосии ҳалқаҳо мавҷуданд: for ва while. Маъмултарин барои.

Илова ба амалҳои мушаххас, шумо метавонед қисмҳои гуногуни кодро то як нуқтаи муайян ҳал кунед. Ин метавонад шумораи муайяни маротиба ё то он даме, ки шарти мушаххас дуруст аст.

Пеш аз он ки мо ба фаҳмидани намудҳои ҳалқаҳо шурӯъ кунем ва дар ҳоле ки, махсусан, мо бояд фаҳмем, ки итератсия чист. Ин як такрори амал ё пайдарпайии амалҳо дар давоми давраи ҷорӣ дар доираи иҷрои барномаи ҷорӣ мебошад.

Велосипед барои

Давраи For мо мисли бисёр забонҳои дигар ҳисобкунак нест. Вазифаи он номбар кардани пайдарпаии муайяни арзишҳо мебошад. Ин чӣ маъно дорад? Фарз мекунем, ки мо рӯйхати элементҳоро дорем. Аввалан, ҳалқа якум, дуюм, сеюм ва ғайраро мегирад.

Бартарии ин ҳалқа дар Python дар он аст, ки ба шумо лозим нест, ки индекси элементро муайян кунед, то бидонед, ки кай аз давра баромадан лозим аст. Ҳама чиз ба таври худкор анҷом дода мешавад.

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

>>> барои элемент дар spisok:

… чоп (элемент + 2)

...

12

42

22

32

Дар мисоли мо, мо тағирёбандаро истифода бурдем element пас аз фармони for. Умуман, ном метавонад ҳама чиз бошад. Масалан, нишонаи маъмул i аст. Ва бо ҳар як такрор, ин тағирёбанда аз рӯйхат объекти мушаххас таъин карда мешавад, ки мо онро калимаи мувофиқ меномидем.

Дар ҳолати мо, рӯйхат пайдарпайии рақамҳои 10,40,20,30 мебошад. Дар ҳар як такрор, арзиши мувофиқ дар тағирёбанда пайдо мешавад. Масалан, ҳамин ки давра оғоз мешавад, тағирёбанда element арзиши 10 таъин карда мешавад. Дар такрори навбатӣ даҳ адад ба рақами 40 мубаддал мешавад, дафъаи сеюм ба рақами 20 ва ниҳоят дар такрори охирини давра ба 30 табдил меёбад.

Сигнал барои анҷоми давра охири унсурҳои рӯйхат мебошад.

Агар ба шумо ҳалқа барои иҷро кардани номгӯи классикии арзишҳо лозим бошад, ба мисли дигар забонҳои барномасозӣ, шумо бояд рӯйхатеро бо пайдарпаии рақамҳои натуралӣ то арзиши лозима эҷод кунед.

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

Ё функсияро истифода баред лен(), барои муайян кардани дарозии рӯйхат. Аммо дар ин ҳолат беҳтар аст, ки ҳалқаро истифода баред дар ҳоле, зеро истифодаи тағирёбанда лозим нест.

Агар ба шумо лозим аст, ки пайдарпайии арзишҳоро дар рӯйхат тағир диҳед, ҳалқа кунед барои ва ин ҷо ба наҷот меояд. Барои ин, дар ҳар як такрор, ба ҳар як унсури рӯйхат арзиши мувофиқ таъин карда мешавад.

Ҳангоми давр

Баръакси давра барои, ки танҳо аз болои арзишҳои пайдарпай такрор мекунад, ҳалқа ҳол он истифодаи бештар дорад. Номи ин намуди давраҳо ҳамчун "ҳанӯз" тарҷума шудааст. Яъне «то».

Ин як ҳалқаи универсалӣ аст, ки дар ҳама забонҳои барномасозӣ мавҷуд аст. Ва дар баъзе мавридҳо он ба оператори шартӣ шабоҳат дорад юв, ки барои риоя шудани шарти муайян тафтиш мекунад. Танҳо дар муқоиса бо оператори шартӣ, ҳол он тафтишро дар ҳар як такрор иҷро мекунад, на танҳо як маротиба. Ва танҳо дар сурати нодуруст будани шарт, давра ба охир мерасад ва фармоне, ки пас аз он меояд, иҷро мешавад. Бо ибораи содда, агар вазъияте, ки дар он кор мекунад, дигар эътибор надорад.

Агар мо давраро кашем ҳол он ба таври содда, ин бо истифода аз чунин схема анҷом дода мешавад.дар ҳоле ки ҳалқа дар Python. Чӣ тавр он кор мекунад, мисолҳои истифода

Дар ин расм шохаи асосии барнома (ки берун аз давра кор мекунад) бо росткунҷаҳои кабуд тасвир шудааст. Фирӯз ҷисми давраро ифода мекунад. Дар навбати худ, ромб шартест, ки дар ҳар як такрор санҷида мешавад.

Давра ҳол он метавонад ба ду истисно оварда расонад:

  1. Агар дар аввали давра ифодаи мантиқӣ ҳақиқӣ барнагардад, пас он танҳо оғоз намешавад ва пеш аз иҷро ба итмом мерасад. Умуман, ин ҳолат муқаррарӣ аст, зеро дар ҳолатҳои муайян, барнома метавонад мавҷудияти ифодаҳоро дар ҷисми даврӣ таъмин накунад.
  2. Агар ифода ҳамеша дуруст бошад, ин метавонад ба ҳалқа оварда расонад. Яъне ба гардиши беохири давра. Аз ин рӯ, дар ин гуна барномаҳо бояд ҳамеша изҳороти баромад аз цикл ё барнома мавҷуд бошад. Аммо, ин вазъият ба миён меояд, ки агар барнома ҳақиқӣ ё нодурустии як ҳолати мушаххасро муайян карда тавонист. Агар вай ин корро карда натавонист, пас бо қатъ шудани барнома хатогӣ бармегардад. Ё шумо метавонед хатогиро ҳал кунед ва он гоҳ, агар он рух диҳад, рамзи муайян иҷро карда мешавад.

Барои ҳалли хатогиҳо шумораи зиёди вариантҳо вуҷуд доранд. Масалан, барнома метавонад аз корбар талаб кунад, ки маълумотро дуруст ворид кунад. Ҳамин тавр, агар шахс рақами манфиро нишон дода бошад, ки он танҳо мусбат буда метавонад ё ҳарфҳоеро ворид кунад, ки танҳо рақамҳо бояд бошанд, барнома метавонад дар ин бора нақл кунад.

Намунаҳои ҳалқаи while

Дар ин ҷо як мисоли кодест, ки хатогиро дар ин ҳолат ҳал мекунад.

n = вуруд ("Аддаи бутунро ворид кунед: ") 

дар ҳоле ки type(n) != int:

    Кӯшиш кунед:

        n = int(n)

    ба истиснои ValueError:

        чоп («Вуруд нодуруст!»)

        n = вуруд ("Аддаи бутунро ворид кунед: ") 

агар n % 2 == 0:

    чоп («Ҳатто»)

дигар:

    чоп («Тоқ»)

Дар хотир доред, ки Python барои эълон кардани сохторҳои мураккаби код колонкаҳоро истифода мебарад.

Дар коди дар боло зикршуда, мо шартеро муайян кардем, ки мо бояд санҷем, ки оё адад бутун аст. Агар ҳа, пас false баргардонида мешавад. Агар не, пас рост.

Дар қисми дуюми код, ки дар он оператор истифода мешавад if, мо оператори %-ро барои ёфтани боқимонда пас аз амалиёти тақсим истифода кардем. Қадами навбатӣ санҷидани он аст, ки рақам ҷуфт аст. Агар не, пас боқимонда дар ин ҳолат як аст. Мувофиқи ин рақам тоқ аст. 

Ба ибораи оддӣ, рамзи дар боло овардашуда аввал тафтиш мекунад, ки сатри воридкардаи корбар рақам аст. Агар ҳа, пас санҷиши дуюм гузаронида мешавад, то бубинад, ки оё боқимондаи тақсим ба ду вуҷуд дорад. Аммо блоки дуюм то он даме, ки арзиши воридкардаи корбар ададӣ набошад, иҷро намешавад.

Яъне ҳалқа то фаро расидани шарт мунтазам иҷро карда мешавад. Дар ин ҳолат, он чунин кор мекунад. 

Яъне, шумо метавонед аз муқобил равед: то он даме, ки ҳодиса бардурӯғ шавад, як амали муайянро ҳал кунед.

Таҳлили код

Акнун биёед муфассалтар бубинем, ки ин код чӣ гуна кор мекунад. Барои ин мо онро зина ба зина тахлил мекунем.

  1. Аввалан, корбар ба сатр ворид мешавад, ки онро тағирёбандаи n қабул мекунад. 
  2. Истифодаи ҳалқа ҳол он навъи ин тағирёбанда тафтиш карда мешавад. Дар вуруди аввал, он баробар нест Int. Аз ин рӯ, дар натиҷаи санҷиш маълум мешавад, ки ин шарт дуруст аст. Аз ин рӯ, бадани ҳалқа ворид карда мешавад.
  3. Бо ёрии оператор кӯшиш мо кӯшиш мекунем, ки сатрро ба рақам табдил диҳем. Агар ин кор карда шавад, пас ягон хатогӣ рух намедиҳад. Мувофиқи он, коркарди он лозим нест. Аз ин рӯ, тарҷумон ба аввали давра бармегардад ва аз рӯи натиҷаҳои санҷиш маълум мешавад, ки он адади бутун шудааст. Пас биёед ба қадами 7 биравем
  4. Агар табдилдиҳӣ муваффақ набошад, пас ValueError дода мешавад. Дар ин ҳолат ҷараёни барнома ба ғайр аз коркардкунанда фиристода мешавад.
  5. Истифодабаранда арзиши наверо ворид мекунад, ки ба тағирёбандаи n таъин карда мешавад.
  6. Тарҷумон ба қадами 2 бармегардад ва боз тафтиш мекунад. Агар он арзиши бутун бошад, ба қадами 7 гузаред. Агар не, табдил мувофиқи қадами 3 дубора кӯшиш карда мешавад.
  7. Бо ёрии оператор if Муайян мекунад, ки пас аз тақсими адад ба 2 боқимонда вуҷуд дорад ё не. 
  8. Дар акси ҳол, матни "ҳатто" баргардонида мешавад.
  9. Дар акси ҳол, матни "тоқ" баргардонида мешавад.

Акнун чунин мисолро дида мебароем. Кӯшиш кунед, ки муайян кунед, ки ин давра чанд маротиба мегузарад?

умумии = 100 

ман = 0

дар ҳоле ки ман <5:

    n = int (ворид ())

    ҷамъ = умумӣ - н

    i = i + 1 

чоп («Боқимонда», ҳамагӣ)

Ҷавоби дуруст 5. Дар аввал, арзиши тағирёбанда i – сифр. Тарҷумон тафтиш мекунад, ки тағирёбанда баробар аст i 4 ё камтар. Агар ҳа, пас арзиш баргардонида мешавад. ҳақиқӣ, ва давра мувофиқан иҷро карда мешавад. Арзиш як маротиба зиёд мешавад.

Пас аз такрори аввал арзиши тағирёбанда ба 1 табдил меёбад. Санҷиш анҷом дода мешавад ва барнома мефаҳмад, ки ин адад боз аз 5 камтар аст. Мувофиқи он, ҷисми давр бори дуюм иҷро мешавад. Азбаски қадамҳо шабеҳанд, арзиш низ як зиёд мешавад ва тағирёбанда ҳоло ба 2 баробар аст.

Ин арзиш низ камтар аз панҷ аст. Сипас давра бори сеюм иҷро карда мешавад ва ба тағирёбанда илова карда мешавад i 1 ва ба он арзиши 3 таъин карда мешавад. Ин боз камтар аз панҷ аст. Ва ҳамин тавр ба такрори шашуми ҳалқа, ки дар он арзиши тағйирёбанда меояд i ба 5 баробар аст (охир, он дар ибтидо сифр буд, то даме ки мо дар ёд дорем). Мутаносибан, ин шарт аз санҷиш намегузарад ва давра ба таври худкор қатъ карда мешавад ва гузариш ба қадами оянда, ки берун аз он аст (ё қатъи барнома, агар қадамҳои зерин пешбинӣ нашуда бошанд) амалӣ карда мешавад.

Давра низ метавонад дар самти муқобил рух диҳад. Дар ин ҷо як мисоли код аст, ки дар он бо ҳар як такрори минбаъда яке аз арзиши ҷории тағирёбанда тарҳ карда мешавад. 

умумии = 100 

дар ҳоле ки ҷамъ > 0:

    n = int (ворид ())

    ҷамъ = умумӣ - н 

чоп («Манбаъ тамом шуд»)

Кӯшиш кунед, ки ин барнома чӣ кор мекунад! Тасаввур кунед, ки дар як тағирёбанда умумӣ маълумот дар бораи захираи барнома нигоҳ дошта мешавад. Ҳар дафъае, ки тарҷумон мавҷуд будани захираро тафтиш мекунад. Дар акси ҳол, пас матни "Захира тамом шуд" пайдо мешавад ва барнома пӯшида мешавад. Ва бо ҳар як такрори ҳалқа, захира ба рақаме, ки корбар муайян мекунад, кам мешавад.

Ва ҳоло вазифаи хонагӣ. Кӯшиш кунед, ки рамзи болоро тағир диҳед, то тағирёбанда аз ҷиҳати ҷисмонӣ манфӣ нагардад. 

4 Комментарии

  1. si code ahaan usoo gudbi

  2. Салом

  3. Ҳа ҳа ҳа

Дин ва мазҳаб