Python дахь while давталт. Энэ нь хэрхэн ажилладаг, хэрэглээний жишээ

Гогцоо бол аливаа хэлний гол хэрэгслүүдийн нэг юм. Python-д хоёр үндсэн гогцоо байдаг бөгөөд тэдгээрийн нэг нь while юм. Үүнийг анхаарч үзээрэй, мөн зургийг илүү сайн ойлгохын тулд өөр нэг зүйлийг анхаарч үзээрэй. Үнэхээр ижил төстэй зүйлтэй харьцуулахад аливаа материалыг ойлгоход илүү хялбар байдаг, тийм үү?

Циклийн тухай ойлголт

Тодорхой үйлдлийг олон удаа хийх шаардлагатай үед гогцоо хэрэгтэй. Энэ нь маш энгийн, учир нь бодит байдал дээр мөчлөгийн хэрэглээний хүрээ илүү өргөн байдаг. Python-д хоёр үндсэн төрлийн гогцоо байдаг: for болон while. Хамгийн алдартай нь.

Тодорхой үйлдлүүдээс гадна та өөр өөр кодын хэсгүүдийг тодорхой цэг хүртэл давтаж болно. Энэ нь тодорхой тооны удаа эсвэл тодорхой нөхцөл үнэн байх үед байж болно.

Бид гогцоонуудын төрлийг ойлгож эхлэхээсээ өмнө, ялангуяа 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(), жагсаалтын уртыг тодорхойлох. Гэхдээ энэ тохиолдолд гогцоо ашиглах нь дээр байхад, Учир нь хувьсагч ашиглах шаардлагагүй.

Хэрэв та жагсаалт дахь утгуудын дарааллыг өөрчлөх шаардлагатай бол гогцоо хийнэ үү нь тэгээд энд аврахаар ирлээ. Үүнийг хийхийн тулд давталт бүрт жагсаалтын элемент бүрд тохирох утгыг өгөх ёстой.

Гэсэн хэдий ч давталт

Циклээс ялгаатай нь, энэ нь зүгээр л дарааллын утгуудыг давтдаг, давталтын бол илүү их хэрэглээтэй. Энэ төрлийн мөчлөгийн нэрийг "одоохондоо" гэж орчуулдаг. Энэ нь "хүртэл" гэсэн үг юм.

Энэ бол бүх програмчлалын хэлэнд байдаг бүх нийтийн гогцоо юм. Мөн зарим талаараа нөхцөлт оператортой төстэй yew, тодорхой нөхцөл хангагдсан эсэхийг шалгах шалгалт хийдэг. Зөвхөн нөхцөлт оператороос ялгаатай нь, бол шалгалтыг нэг удаа биш давталт бүрт гүйцэтгэдэг. Зөвхөн нөхцөл худал бол гогцоо дуусч, түүнийг дагасан тушаалыг гүйцэтгэнэ. Энгийн үгээр хэлбэл, түүний ажиллаж буй нөхцөл байдал цаашид хүчингүй болсон бол.

Хэрэв бид мөчлөг зурвал бол энгийнээр бол ийм схемийг ашиглан үүнийг хийдэг.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 байна

би < 5 байхад:

    n = int(оролт())

    нийт = нийт — n

    i = i + 1 

хэвлэх("Үлдсэн", нийт)

Зөв хариулт нь 5. Эхний ээлжинд хувьсагчийн утга i - тэг. Орчуулагч хувьсагч тэнцүү эсэхийг шалгана i 4 ба түүнээс бага. Хэрэв тийм бол утгыг буцаана. үнэн, мөн давталт зохих ёсоор гүйцэтгэгдэнэ. Үнэ нь нэгээр нэмэгддэг.

Эхний давталтын дараа хувьсагчийн утга 1 болно. Шалгалт хийгдэх ба энэ тоо дахин 5-аас бага байгааг программ ойлгоно. Үүний дагуу давталтын бие хоёр дахь удаагаа гүйцэтгэгдэнэ. Алхамууд ижил төстэй тул утга нь нэгээр нэмэгдэж, хувьсагч одоо 2-той тэнцүү байна.

Энэ утга нь бас таваас бага байна. Дараа нь гогцоо гурав дахь удаагаа хийгдэж хувьсагчид нэмэгдэнэ i 1 бөгөөд энэ нь 3 гэсэн утгыг өгсөн. Энэ нь дахиад таваас бага байна. Тиймээс энэ нь хувьсагчийн утга болох давталтын зургаа дахь давталт руу ирдэг i 5-тай тэнцүү (эцсийн эцэст энэ нь бидний санаж байгаагаар анх тэг байсан). Үүний дагуу энэ нөхцөл туршилтыг давж чадаагүй бөгөөд давталт автоматаар дуусгавар болж, түүний гадна байгаа дараагийн алхам руу шилжих (эсвэл дараах алхмуудыг хийгээгүй бол програмыг зогсоох) явагдана.

Цикл нь эсрэг чиглэлд ч тохиолдож болно. Дараачийн давталт бүрт хувьсагчийн одоогийн утгаас нэгийг хасдаг кодын жишээ энд байна. 

нийт = 100 

нийт > 0 байхад:

    n = int(оролт())

    нийт = нийт — n 

хэвлэх("Нөөц дууссан")

Энэ програм юу хийдгийг таахыг хичээгээрэй! Үүнийг хувьсагчаар төсөөлөөд үз дээ Нийт програмын нөөцийн талаарх мэдээлэл хадгалагдана. Орчуулагч эх сурвалж байгаа эсэхийг шалгах бүрт. Үгүй бол "Нөөц дууссан" гэсэн бичвэр гарч ирэх бөгөөд програм хаагдана. Мөн давталтын давталт бүрт нөөц нь хэрэглэгчийн заасан тоогоор буурдаг.

Тэгээд одоо гэрийн даалгавар. Дээрх кодыг өөрчлөхийн тулд хувьсагч нь сөрөг болж чадахгүй. 

4 санал

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

  2. Сайн уу

  3. хэхэ

хариу үлдээх