Python'до while цикли. Бул кантип иштейт, колдонуу мисалдары

Циклдер ар бир тилдин негизги куралдарынын бири болуп саналат. Pythonдо эки негизги цикл бар, алардын бири while. Аны карап көрүңүз, ошондой эле сүрөттү жакшыраак түшүнүү үчүн дагы бир. Чынында эле, окшош нерсеге салыштырмалуу, кандайдыр бир материалды түшүнүү алда канча жеңил, туурабы?

Цикл түшүнүгү

Белгилүү бир аракетти бир нече жолу аткаруу керек болгондо цикл керек. Бул абдан жөнөкөйлөштүрүлгөн, анткени чындыгында циклдер үчүн колдонмолордун диапазону алда канча кеңири. Pythonдо циклдердин эки негизги түрү бар: for жана while. үчүн эң популярдуу.

Белгилүү иш-аракеттерден тышкары, сиз белгилүү бир чекитке чейин коддун ар кандай бөлүктөрүн айланта аласыз. Бул белгилүү бир нече жолу болушу мүмкүн, же белгилүү бир шарт чын болсо.

Циклдердин түрлөрүн түшүнө баштоодон мурун, атап айтканда, биз дагы эле итерация деген эмне экенин түшүнүшүбүз керек. Бул учурдагы колдонмонун иштөөсүндөгү учурдагы циклдеги аракеттин же аракеттердин ырааттуулугунун бир кайталанышы.

Cycle For

Биздин 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(), тизменин узундугун аныктоо үчүн. Бирок бул учурда ал укурук колдонуу жакшы ал эми, анткени өзгөрмө колдонуунун кереги жок.

Эгер тизмедеги маанилердин ырааттуулугун өзгөртүү керек болсо, цикл үчүн жана бул жерде жардамга келет. Бул үчүн, ар бир итерацияда тизменин ар бир элементине тиешелүү маани берилиши керек.

While Loop

Циклден айырмаланып үчүн, бул жөн гана ырааттуулуктун, циклдин маанилери боюнча кайталанат жатканда көбүрөөк колдонууга ээ. Циклдердин бул түрүнүн аталышы "дагы" деп которулат. Башкача айтканда, "чейин".

Бул бардык программалоо тилдеринде табылган универсалдуу цикл. Жана кандайдыр бир жагынан ал шарттуу операторго окшош йе, белгилүү бир шарттын аткарылганын текшерүү үчүн текшерүү жүргүзөт. Шарттуу оператордон айырмаланып гана, жатканда текшерүүнү бир эле жолу эмес, ар бир итерацияда аткарат. Жана шарт жалган болсо гана цикл аяктайт жана андан кийинки буйрук аткарылат. Жөнөкөй сөз менен айтканда, эгерде ал иштеген кырдаал жарабай калса.

Эгерде циклди тартсак жатканда жөнөкөй, бул ушундай схеманы колдонуу менен жүзөгө ашырылат.Python'до while цикли. Бул кантип иштейт, колдонуу мисалдары

Программанын негизги бутагы (ал циклден тышкары) бул сүрөттө көк тик бурчтуктар менен сүрөттөлгөн. Бирюза циклдин денесин билдирет. Өз кезегинде, ромб ар бир итерацияда текшерилип турган шарт.

цикл жатканда эки өзгөчөлүктү алып келиши мүмкүн:

  1. Эгерде циклдин башында логикалык туюнтма чындыкка кайтып келбесе, анда ал аткарылганга чейин бүтүп, жөн эле башталбайт. Жалпысынан алганда, бул нормалдуу көрүнүш, анткени белгилүү бир шарттарда, тиркеме циклдин денесинде туюнтмалардын болушун камсыз кылбашы мүмкүн.
  2. Эгерде туюнтма ар дайым туура болсо, бул циклге алып келиши мүмкүн. Башкача айтканда, циклдин чексиз жылдырылышына. Ошондуктан, мындай программаларда циклден же программадан чыгуу оператору дайыма болушу керек. Бирок, программа белгилүү бир шарттын чын же жалган экенин аныктай алган болсо, бул жагдай пайда болот. Эгер ал муну кыла албаса, анда программанын токтотулушу менен ката кайтарылат. Же сиз катаны чече аласыз, андан кийин ал орун алса, белгилүү бир код аткарылат.

Катаны кантип чечүү үчүн көптөгөн варианттар болушу мүмкүн. Мисалы, программа колдонуучудан маалыматтарды туура киргизүүнү суранышы мүмкүн. Ошентип, эгерде адам терс санды көрсөтсө, анда ал оң гана болушу мүмкүн, же сандар гана болушу керек болгон тамгаларды киргизсе, программа бул тууралуу айтып бере алат.

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

Бул учурда катаны чечүүчү коддун мисалы.

n = input("Бүтүн санды киргизиңиз:") 

while type(n) != int:

    көрүү:

        n = int(n)

    ValueErrorдон тышкары:

        print("Туура эмес жазуу!")

        n = input("Бүтүн санды киргизиңиз:") 

эгерде 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 

мен = 0

ал эми мен < 5:

    n = int(input())

    жалпы = жалпы — н

    i = i + 1 

басып чыгаруу ("Калган", жалпы)

Туура жооп 5. Башында өзгөрмөнүн мааниси i - нөл. Котормочу өзгөрмөнүн барабар экендигин текшерет i 4 же андан аз. Ооба болсо, анда маани кайтарылат. чыныгы, жана цикл ошого жараша аткарылат. Баасы бир эсе жогорулайт.

Биринчи итерациядан кийин өзгөрмөнүн мааниси 1ге айланат. Текшерүү жүргүзүлүп, программа бул сан кайра 5тен аз экенин түшүнөт. Демек, цикл денеси экинчи жолу аткарылат. Кадамдар окшош болгондуктан, маани дагы бирге көбөйүп, өзгөрмө эми 2ге барабар.

Бул көрсөткүч дагы бештен аз. Андан кийин цикл үчүнчү жолу аткарылып, өзгөрмөгө кошулат i 1 жана ага 3 деген маани берилет. Бул дагы бештен аз. Ошентип, циклдин алтынчы итерациясына келет, анда өзгөрмөнүн мааниси i 5ке барабар (анткени, ал башында нөл болгон, биздин эсибизде). Демек, бул шарт сыноодон өтпөйт жана цикл автоматтык түрдө токтотулат жана андан тышкары турган кийинки кадамга өтүү (же төмөнкү кадамдар каралбаса, программаны токтотуу) ишке ашырылат.

Цикл тескери багытта да болушу мүмкүн. Бул жерде ар бир кийинки итерацияда өзгөрмөнүн учурдагы маанисинен бирөө алынып салынуучу коддун мисалы келтирилген. 

жалпы = 100 

жалпы > 0 болсо:

    n = int(input())

    жалпы = жалпы — н 

басып чыгаруу («Ресурс түгөнүп калды»)

Бул программа эмне кыларын болжолдоого аракет кылыңыз! Муну өзгөрмөдө элестетиңиз жалпы программа ресурсу жөнүндө маалымат сакталат. Ар бир жолу котормочу бул ресурстун бар-жогун текшерет. Болбосо, анда "Ресурс түгөнүп калды" деген текст пайда болуп, программа жабылат. Жана циклдин ар бир кайталанышы менен ресурс колдонуучу белгилеген санга азаят.

Ал эми азыр үй тапшырмасы. Өзгөрмө физикалык жактан терс болуп калбашы үчүн, жогорудагы кодду өзгөртүп көрүңүз. 

4 Comments

  1. си код ахаан усоо гудби

  2. Салам

  3. күлкүнүчтүү

Таштап Жооп