Pythonda while loop. U qanday ishlaydi, foydalanish misollari

Looplar har qanday tilning asosiy vositalaridan biridir. Python-da ikkita asosiy tsikl mavjud, ulardan biri while. Buni ko'rib chiqing, shuningdek, rasmni yaxshiroq tushunish uchun yana bir narsa. Darhaqiqat, shunga o'xshash narsa bilan solishtirganda, har qanday materialni tushunish ancha oson, shunday emasmi?

Tsikl tushunchasi

Muayyan harakatni bir necha marta bajarish kerak bo'lganda tsikl kerak bo'ladi. Bu juda sodda, chunki aslida tsikllar uchun ilovalar doirasi ancha kengroq. Python-da ikkita asosiy turdagi tsikllar mavjud: for va while. uchun eng mashhur.

Muayyan harakatlarga qo'shimcha ravishda, siz turli xil kod qismlarini ma'lum bir nuqtaga aylantirishingiz mumkin. Bu ma'lum bir necha marta bo'lishi mumkin yoki ma'lum bir shart to'g'ri bo'lsa.

Ilgak turlarini tushunishni boshlashdan oldin va ayniqsa while, biz hali ham iteratsiya nima ekanligini tushunishimiz kerak. Bu amaldagi amallar yoki amallar ketma-ketligini joriy dastur ishga tushirishda joriy sikl davomida bir marta takrorlashdir.

Velosiped uchun

Bizning For tsiklimiz boshqa tillardagi kabi hisoblagich emas. Uning vazifasi qiymatlarning ma'lum bir ketma-ketligini sanab o'tishdir. Nima degani bu? Aytaylik, bizda elementlar ro'yxati bor. Birinchidan, pastadir birinchi, ikkinchi, uchinchi va hokazolarni oladi.

Python-dagi ushbu tsiklning afzalligi shundaki, tsikldan qachon chiqish kerakligini bilish uchun element indeksini aniqlash shart emas. Hamma narsa avtomatik ravishda amalga oshiriladi.

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

>>> spisokdagi element uchun:

… chop etish (element + 2)

...

12

42

22

32

Bizning misolimizda biz o'zgaruvchidan foydalandik element for buyrug'idan keyin. Umuman olganda, ism har qanday bo'lishi mumkin. Masalan, mashhur belgi i. Va har bir iteratsiya bilan bu o'zgaruvchiga ro'yxatdan ma'lum bir ob'ekt tayinlanadi, biz uni tegishli so'z deb ataganmiz.

Bizning holatlarimizda ro'yxat 10,40,20,30 raqamlari ketma-ketligidir. Har bir iteratsiyada mos keladigan qiymat o'zgaruvchida paydo bo'ladi. Masalan, tsikl boshlanishi bilanoq, o'zgaruvchi element 10 qiymati belgilanadi. Keyingi takrorlashda o'nlik 40 raqamiga aylanadi, uchinchi marta u 20 raqamiga aylanadi va nihoyat, tsiklning oxirgi takrorlanishida u 30 ga aylanadi.

Tsiklning tugashi uchun signal ro'yxatdagi elementlarning oxiri hisoblanadi.

Agar sizga boshqa dasturlash tillarida bo'lgani kabi klassik qiymatlarni ro'yxatga olish uchun tsikl kerak bo'lsa, biz kerakli qiymatgacha natural sonlar ketma-ketligi bilan ro'yxat yaratishingiz kerak.

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

Yoki funksiyadan foydalaning len(), ro'yxat uzunligini aniqlash uchun. Ammo bu holda loopdan foydalanish yaxshiroqdir esa, chunki o'zgaruvchidan foydalanishga hojat yo'q.

Agar siz ro'yxatdagi qiymatlar ketma-ketligini o'zgartirishingiz kerak bo'lsa, pastadir uchun va bu erda yordamga keladi. Buning uchun har bir iteratsiyada ro'yxatning har bir elementiga tegishli qiymat berilishi kerak.

Loop paytida

Tsikldan farqli o'laroq uchun, bu shunchaki ketma-ketlik, tsiklning qiymatlari ustida takrorlanadi paytda ko'proq foydalanishga ega. Ushbu turdagi tsikllarning nomi "hali" deb tarjima qilingan. Ya'ni, "quncha".

Bu barcha dasturlash tillarida mavjud bo'lgan universal tsikldir. Va qaysidir ma'noda u shartli operatorga o'xshaydi yew, muayyan shart bajarilganligini tekshirish uchun tekshiruvni amalga oshiradi. Faqat shartli operatordan farqli o'laroq, paytda tekshirishni bir marta emas, balki har bir iteratsiyada amalga oshiradi. Va faqat shart noto'g'ri bo'lsa, tsikl tugaydi va undan keyingi buyruq bajariladi. Oddiy so'zlar bilan aytganda, agar u ishlayotgan vaziyat endi haqiqiy emas.

Agar biz tsikl chizsak paytda sodda qilib aytganda, bu shunday sxema yordamida amalga oshiriladi.Pythonda while loop. U qanday ishlaydi, foydalanish misollari

Dasturning asosiy tarmog'i (u tsikldan tashqarida ishlaydi) bu rasmda ko'k to'rtburchaklar bilan tasvirlangan. Turkuaz tsiklning tanasini ifodalaydi. O'z navbatida, romb har bir iteratsiyada tekshiriladigan shartdir.

Ko'chadan paytda ikkita istisnoga olib kelishi mumkin:

  1. Agar tsikl boshida mantiqiy ifoda haqiqatga qaytmasa, u bajarilgunga qadar tugallangandan so'ng boshlanmaydi. Umuman olganda, bu holat normaldir, chunki ma'lum bir sharoitda, dastur halqa tanasida ifodalarning mavjudligini ta'minlamasligi mumkin.
  2. Agar ifoda har doim to'g'ri bo'lsa, bu tsiklga olib kelishi mumkin. Ya'ni, tsiklning cheksiz aylanishiga. Shuning uchun bunday dasturlarda doimo sikl yoki dasturdan chiqish bayonoti bo'lishi kerak. Ammo, agar dastur ma'lum bir shartning haqiqat yoki noto'g'riligini aniqlay olgan bo'lsa, bu holat yuzaga keladi. Agar u buni qila olmasa, dasturni tugatish bilan xatolik qaytariladi. Yoki siz xatoni hal qilishingiz mumkin, keyin esa, agar u sodir bo'lsa, ma'lum kod bajariladi.

Xatoni qanday hal qilish bo'yicha juda ko'p variantlar bo'lishi mumkin. Masalan, dastur foydalanuvchidan ma'lumotlarni to'g'ri kiritishni so'rashi mumkin. Shunday qilib, agar biror kishi faqat ijobiy bo'lishi mumkin bo'lgan salbiy raqamni ko'rsatgan bo'lsa yoki faqat raqamlar bo'lishi kerak bo'lgan harflarni kiritgan bo'lsa, dastur bu haqda aytib berishi mumkin.

While tsikliga misollar

Bu holatda xatoni hal qiladigan kod misoli.

n = kiritish ("Bitsonni kiriting: ") 

type(n) != int esa:

    Sinash:

        n = int(n)

    ValueError tashqari:

        chop etish ("Noto'g'ri kiritilgan!")

        n = kiritish ("Bitsonni kiriting: ") 

agar n % 2 == 0 bo'lsa:

    chop etish ("Juft")

boshqa:

    chop etish ("G'alati")

Yodda tutingki, Python murakkab kod konstruktsiyalarini e'lon qilish uchun ikki nuqtadan foydalanadi.

Yuqoridagi kodda biz raqamning butun son ekanligini tekshirishimiz kerak bo'lgan shartni aniqladik. Ha bo'lsa, false qaytariladi. Agar yo'q bo'lsa, unda haqiqat.

Kodning ikkinchi qismida operator ishlatiladi if, bo'lish amalidan keyin qolganni topish uchun % operatoridan foydalandik. Keyingi qadam raqam juft yoki yo'qligini tekshirishdir. Agar yo'q bo'lsa, bu holda qolganlari bitta. Shunga ko'ra, raqam g'alati. 

Oddiy qilib aytganda, yuqoridagi kod avval foydalanuvchi kiritgan qator raqam ekanligini tekshiradi. Ha bo'lsa, ikkiga bo'linishning qolgan qismi bor-yo'qligini tekshirish uchun ikkinchi tekshiruv o'tkaziladi. Lekin ikkinchi blok foydalanuvchi kiritgan qiymat sonli bo'lmaguncha bajarilmaydi.

Ya'ni, shart yuzaga kelguncha tsikl muntazam ravishda bajariladi. Bunday vaziyatda u shunday ishlaydi. 

Ya'ni, siz teskari tomonga o'tishingiz mumkin: hodisa noto'g'ri bo'lguncha ma'lum bir harakatni aylantiring.

Kodni tahlil qilish

Endi ushbu kod qanday ishlashini batafsil ko'rib chiqamiz. Buning uchun biz uni bosqichma-bosqich tahlil qilamiz.

  1. Birinchidan, foydalanuvchi n o'zgaruvchisi tomonidan qabul qilinadigan satrni kiritadi. 
  2. Loopdan foydalanish paytda bu o'zgaruvchining turi tekshiriladi. Birinchi kirishda u teng emas int. Shuning uchun test natijasida bu shartning to'g'ri ekanligi aniqlandi. Shuning uchun, pastadir tanasi kiritiladi.
  3. Operator yordamida urinish biz satrni raqamga aylantirishga harakat qilyapmiz. Agar bu bajarilsa, unda hech qanday xato bo'lmaydi. Shunga ko'ra, uni qayta ishlashga hojat yo'q. Shuning uchun tarjimon tsiklning boshiga qaytadi va tekshirish natijalariga ko'ra u butun songa aylanganligi ma'lum bo'ladi. Shunday qilib, 7-bosqichga o'tamiz
  4. Agar konvertatsiya muvaffaqiyatsiz bo'lsa, ValueError yuboriladi. Bunday holda, dastur oqimi boshqa ishlov beruvchiga yuboriladi.
  5. Foydalanuvchi n o'zgaruvchisiga tayinlangan yangi qiymatni kiritadi.
  6. Tarjimon 2-bosqichga qaytadi va yana tekshiradi. Agar bu butun son bo'lsa, 7-bosqichga o'ting. Agar yo'q bo'lsa, 3-bosqichga muvofiq konvertatsiyaga qayta urinib ko'ring.
  7. Operator yordamida if Raqamni 2 ga bo'lgandan keyin qoldiq bor yoki yo'qligini aniqlaydi. 
  8. Aks holda, "juft" matni qaytariladi.
  9. Aks holda, "g'alati" matni qaytariladi.

Endi bunday misolni ko'rib chiqing. Ushbu tsikl necha marta o'tishini aniqlashga harakat qiling?

jami = 100 

i = 0

men < 5 bo'lganda:

    n = int(kirish())

    jami = jami - n

    i = i + 1 

chop etish ("Qolgan", jami)

To'g'ri javob 5. Dastlab, o'zgaruvchining qiymati i - nol. Tarjimon o'zgaruvchining teng yoki yo'qligini tekshiradi i 4 yoki undan kam. Ha bo'lsa, qiymat qaytariladi. haqiqiy, va sikl shunga mos ravishda bajariladi. Qiymat bir marta oshiriladi.

Birinchi takrorlashdan keyin o'zgaruvchining qiymati 1 ga aylanadi. Tekshirish amalga oshiriladi va dastur bu raqam yana 5 dan kichik ekanligini tushunadi. Shunga ko'ra, tsikl tanasi ikkinchi marta bajariladi. Bosqichlar o'xshash bo'lgani uchun qiymat ham bittaga oshiriladi va o'zgaruvchi endi 2 ga teng.

Bu qiymat ham beshdan kam. Keyin tsikl uchinchi marta bajariladi, o'zgaruvchiga qo'shiladi i 1 va unga 3 qiymati beriladi. Bu yana beshdan kam. Shunday qilib, bu o'zgaruvchining qiymati bo'lgan tsiklning oltinchi iteratsiyasiga keladi i 5 ga teng (axir, biz eslaganimizdek, u dastlab nolga teng edi). Shunga ko'ra, bu shart sinovdan o'tmaydi va tsikl avtomatik ravishda tugatiladi va undan tashqarida bo'lgan keyingi bosqichga o'tish (yoki quyidagi bosqichlar ta'minlanmagan bo'lsa, dasturni tugatish) amalga oshiriladi.

Tsikl teskari yo'nalishda ham sodir bo'lishi mumkin. Mana, har bir keyingi iteratsiyada o'zgaruvchining joriy qiymatidan bittasi ayiriladigan kod misoli. 

jami = 100 

jami > 0 bo'lsa:

    n = int(kirish())

    jami = jami - n 

chop etish ("Resurs tugadi")

Ushbu dastur nima qilishini taxmin qilishga harakat qiling! Buni o'zgaruvchida tasavvur qiling jami dastur resursi haqidagi ma'lumotlar saqlanadi. Har safar tarjimon resurs mavjudligini tekshiradi. Agar yo'q bo'lsa, "Resurs tugadi" matni ko'rsatiladi va dastur yopiladi. Va tsiklning har bir iteratsiyasi bilan resurs foydalanuvchi ko'rsatgan raqamga kamayadi.

Va endi uy vazifasi. Yuqoridagi kodni o'zgartirib ko'ring, shunda o'zgaruvchi jismoniy salbiy bo'lmaydi. 

4 Comments

  1. si kodi ahaan usoo gudbi

Leave a Reply