Mavzu
Dars xulosasi
whilesikli — berilgan shart rost (True) bo‘lib turgan vaqt davomida amallarni takrorlayveradi va shart yolg‘on (False) bo‘lishi bilan to‘xtaydi.forsiklidan farqli o‘laroq,whiletakrorlanishlar soni oldindan aniq bo‘lmaganda (masalan, foydalanuvchi to‘g‘ri parol kiritguncha) ishlatiladi.- Agar sikl ichidagi hisoblagich qiymati o‘zgartirilmasa (
i += 1), dastur cheksiz siklga tushib qoladi. - Cheksiz siklni to‘xtatish uchun terminalda
Ctrl + Ctugmalari bosiladi. breakoperatori siklni zudlik bilan to‘xtatadi va undan butunlay olib chiqadi.continueoperatori siklning joriy qadamidagi qolgan amallarni tashlab, navbatdagi aylanishga o‘tadi.- Rasmiy qo‘llanmadagi parolni 3 ta urinishda tekshirish masalasi
while,ifvabreakkombinatsiyasining klassik namunasidir.
Qo'shimcha ma'lumot
Nega serverlar cheksiz siklda ishlaydi?
Backend va tarmoq texnologiyalarida veb-serverlar (FastAPI, Nginx, Node.js) mohiyatan boshqariladigan cheksiz sikl (while True:) asosida ishlaydi! Server ertalab yoqiladi va tun-u kun foydalanuvchilardan keladigan HTTP so‘rovlarni kutib turadi:
python
while True:
so'rov = yangi_sorovni_kut()
so'rovga_javob_ber(so'rov)
if server_toxtatish_buyrugi:
breakAgar sikl bo‘lmaganida, server bitta odam kirishi bilan o‘z ishini tugatib qo‘ygan bo‘lardi.
while ... else imkoniyati
Pythonda qiziqarli xususiyat mavjud: while siklidan keyin else yozish mumkin!
- Agar sikl odatiy tarzda, ya'ni shart
Falsebo‘lib o‘z vaqtida tugasa →elseqismi ishlaydi; - Agar sikl
breakoperatori orqali muddatidan oldin to‘xtatilsa →elseqismi ishlamaydi. Bu imkoniyat qidiruv va parollarni tekshirishda juda qulaydir.
break vs continue: Farqni his qilish
break— bu "Favqulodda tormoz": qolgan barcha takrorlanishlar bekor qilinadi va sikl butunlay yopiladi.continue— bu "Qadamni o‘tkazib yuborish": masalan, ro‘yxatdagi 100 ta foydalanuvchiga xat jo‘natayotganda, nofaol foydalanuvchini uchratib qolsak, unicontinuebilan tashlab o‘tamiz va keyingi odamga xat yuboramiz.
Odatiy xatolar
- Qadamni yozishni unutish:python
i = 1 while i <= 5: print(i) # i += 1 yozilmadi -> Cheksiz 1 chiqadi! - Noto‘g‘ri shart yozish:
while i > 5:agar boshlang‘ichi = 1bo‘lsa, shart boshidanoqFalsebo‘lib, sikl umuman biror marta ham ishlamaydi.
Atamalar lug'ati
| Atama | Ma'nosi |
|---|---|
| while | Shart rost turguncha ishlovchi takrorlanish operatori |
| Cheksiz sikl (Infinite loop) | Sharti hech qachon False bo‘lmaydigan to‘xtovsiz dastur |
| break | Siklni darhol to‘xtatib, undan chiqish operatori |
| continue | Siklning joriy iteratsiyasini tashlab, keyingisiga o‘tish |
| Ctrl + C | Terminalda qotib qolgan yoki cheksiz dasturni majburiy to‘xtatish |
| Flag (Bayroqcha) | Mantiqiy holatni saqlovchi maxsus o‘zgaruvchi (True/False) |
| Uptime | Serverning to‘xtovsiz ishlab turish vaqti |
Bilasizmi?
- Kompyuter o‘yinlarining asosiy yadrosi (Game Loop) aynan
while o'yin_davom_etmoqda:sikli ustida ishlaydi. Har bir aylanishda o‘yinchi harakati tahlil qilinadi va ekran yangilanadi (FPS — sekundiga aylanishlar soni). - NASA kosmik apparatlaridagi dasturlarda cheksiz sikllardan saqlanish uchun maxsus apparat taymerlari (Watchdog Timer) qo‘llaniladi. Agar dastur cheksiz aylanib qotsa, taymer tizimni avtomatik qayta yuklaydi (restart).
Topshiriqlar
1. 1 dan 5 gacha chiqarish oson
i = 1 boshlang‘ich qiymatidan foydalanib, while i <= 5: yordamida sonlarni konsolga chiqaring. Kutiladigan natija: 1, 2, 3, 4, 5 sonlari alohida qatorlarda chiqishi.
2. "Parol" so‘zini kutish oson
Foydalanuvchi "open" so‘zini kiritguncha konsoldan takroran so‘rovchi oddiy dastur yozing. Kutiladigan natija: Faqat "open" kiritilgandagina sikldan chiqib "Eshik ochildi" deb chiqarish.
3. Teskari sanoq oson
vaqt = 5. while sikli orqali sonni 1 gacha kamaytirib boring va oxirida "Vaqt tugadi!" deb chiqaring. Kutiladigan natija: 5 4 3 2 1 Vaqt tugadi!
4. 2 dan 10 gacha juft sonlar oson
n = 2 dan boshlab, while n <= 10: orqali n += 2 qadam bilan barcha juft sonlarni chiqaring. Kutiladigan natija: 2 4 6 8 10
5. 0 kiritilguncha sonlar yig‘indisi o'rta
Foydalanuvchidan son kiritishni so‘rang. U 0 kiritmaguncha barcha kiritilgan sonlarni bir-biriga qo‘shib boring va yakuniy summani ko‘rsating. Kutiladigan natija: 0 kiritilganda umumiy yig‘indi ekranga chiqishi.
6. Parol tekshirish (1.43-rasm) o'rta
Rasmiy qo‘llanmadagi misol bo‘yicha: parol = "1234" bo‘lsin. Foydalanuvchi to‘g‘ri parolni kiritmaguncha "Xato! Qayta urinib ko'ring" deb qayta so‘rovchi dastur tuzing. Kutiladigan natija: To‘g‘ri kiritilganda "Kirish tasdiqlandi" chiqishi.
7. break bilan sonni topish o'rta
1 dan 100 gacha sonlar ketma-ketligida aylanayotgan sikl birinchi 7 ga va 5 ga bo‘linadigan sonni (i % 35 == 0) uchratganda break bilan to‘xtasin va o‘sha sonni ko‘rsatsin. Kutiladigan natija: Topilgan birinchi son: 35
8. continue bilan toqlarni o‘tkazib yuborish o'rta
1 dan 15 gacha bo‘lgan sonlar orasida toq son uchrasa continue bilan tashlab o‘tib, faqat juft sonlarni chiqaruvchi kod yozing. Kutiladigan natija: 2 4 6 8 10 12 14
9. 3 ta urinishli parol tekshiruvi (1.44-rasm) qiyin
Rasmiy qo‘llanmadagi 1.44-rasm topshirig‘i: Foydalanuvchiga parolni kiritish uchun bor-yo‘g‘i 3 ta urinish bering.
- Agar 3 tadan kam urinishda to‘g‘ri parol kiritsa →
"Kirish muvaffaqiyatli!"xabari chiqsin vabreakbilan sikl to‘xtasin. - Agar 3 ta urinishda ham xato kiritsa →
"Urinishlar soni tugadi! Hisob bloklandi"deb chiqarsin. Kutiladigan natija: To‘liq xavfsiz autentifikatsiya oqimi.
10. Sonli taxmin o‘yini qiyin
Dasturda yashirin_son = 17 saqlangan. Foydalanuvchi kiritgan son yashirin sondan katta bo‘lsa "Kichikroq son ayting", kichik bo‘lsa "Kattaroq son ayting" deb ko‘rsatma beruvchi va topguncha davom etuvchi dastur tuzing. Kutiladigan natija: To‘g‘ri topilganda "Tabriklaymiz, siz topdingiz!" chiqishi.
11. Savatcha hisoblagich bonus
Foydalanuvchi xarid qilayotgan mahsulot narxlarini kiritadi. Agar u stop deb yozsa yoki manfiy son kiritsa, hisob-kitob to‘xtatilib, jami xarid summasi va nechta mahsulot olingani ko‘rsatilsin. Kutiladigan natija: To‘liq chek hisobi va mahsulotlar soni.
O'zingizni tekshiring
- Qanday vaziyatlarda
foremas, aynanwhilesiklidan foydalanish to‘g‘ri bo‘ladi? - Cheksiz sikl qanday xatolik tufayli yuzaga keladi va uni qanday to‘xtatish mumkin?
breakvacontinueoperatorlarining bir-biridan qanday asosiy farqi bor?- Rasmiy qo‘llanmadagi 3 ta urinishli parol masalasida
urinishlarhisoblagichi qanday oshirib borildi? while False:deb yozilsa, sikl ichidagi kod necha marta ishlaydi?- Qanday qilib
whilesiklini serverda doimiy so‘rov kutish uchun ishlatish mumkin?
Uyga vazifa
parol_urinish.pyfaylida rasmiy 1.44-rasmdagi 3 ta imkoniyatli parol dasturini to‘liq yozing va sinab ko‘ring.- 1 dan 50 gacha bo‘lgan sonlar ichidan 5 ga karrali sonlarni
continueorqali tashlab o‘tib, qolganlarini chiqaruvchi dastur yozing. - Foydalanuvchi
exitso‘zini yozmaguncha unga salom beruvchi mini-chat dasturini tuzing.
