Bu bo'limda takrorlanuvchi jarayonlarning universal vositasi — while tsikli o'rganildi: ishlash tartibi, cheksiz tsikl xavfi, break/continue va ro'yxat-lug'atlar bilan birga ishlatish.
While qanday ishlaydi
while sharti True bo'lib turar ekan, tanasidagi kod qayta-qayta bajariladi. Har aylanish boshida shart qayta tekshiriladi:
son = 1
while son <= 5:
print("Aylanish:", son)
son += 1
print("Tsikl tugadi, son =", son)
Natija:
Aylanish: 1
Aylanish: 2
Aylanish: 3
Aylanish: 4
Aylanish: 5
Tsikl tugadi, son = 6
Oxirgi qatorga e'tibor bering: tsikl son 6 bo'lganda to'xtadi — shart (6 <= 5) yolg'on bo'ldi. Tsikl tugagach dastur keyingi qatordan odatdagidek davom etadi.
Ikkita klassik qolip:
Hisoblagich (counter) — yuqoridagi misol: o'zgaruvchi har aylanishda o'sadi, shart chegarani belgilaydi.
Yig'uvchi (accumulator) — natija tsikl davomida to'planib boradi:
jami = 0
son = 1
while son <= 100:
jami += son
son += 1
print("1 dan 100 gacha yig'indi:", jami)
Natija:
1 dan 100 gacha yig'indi: 5050
Cheksiz tsikl — bu yerdagi 1-xato
Agar shart hech qachon False bo'lmasa, tsikl to'xtamaydi va dastur "osilib qoladi" (Repl.it'da Stop, terminalda Ctrl+C bilan to'xtatiladi). Eng ko'p sabab — shartga ta'sir qiluvchi o'zgaruvchini yangilashni unutish:
son = 1
while son <= 5:
print(son) # son += 1 yo'q — 1 raqami cheksiz chiqaveradi
Qoida: while yozganingizda o'zingizdan so'rang — "bu shart qachon va nima hisobiga yolg'on bo'ladi?" Javob yo'q bo'lsa, tsikl cheksiz.
break va continue
Ikkala operator tsikl oqimini ichkaridan boshqaradi:
while True:
buyruq = input("Buyruq kiriting (chiqish — q): ")
if buyruq == "q":
break # tsikldan butunlay chiqish
if buyruq == "":
continue # bu aylanishni tashlab, qaytadan so'rash
print("Bajarildi:", buyruq)
print("Dastur tugadi")
Foydalanuvchi salom, (bo'sh), q kiritganda Natija:
Bajarildi: salom
Dastur tugadi
break— tsiklni shu zahoti butunlay to'xtatadi; boshqaruv tsikldan keyingi qatorga o'tadi.continue— faqat shu aylanishning qolganini tashlaydi; tsikl keyingi aylanishdan davom etadi.
while True + break juftligi — foydalanuvchi bilan muloqot qiladigan dasturlarning standart shakli: shart "to'xtash signali kelguncha ishla" deb o'qiladi. Keyingi bo'limdagi ikkala o'yin aynan shu qolipda quriladi.
Tipik xato — breakni ifsiz yozish: shartsiz break tsiklni birinchi aylanishdayoq to'xtatadi va tsiklning ma'nosi qolmaydi.
While ro'yxatlar bilan
Bo'sh bo'lmagan ro'yxat shart o'rnida True deb baholanadi, bo'sh ro'yxat — False. Bundan "bo'shaguncha ishla" qolipi kelib chiqadi:
navbat = ["Ali", "Vali", "Olim"]
xizmat_qilindi = []
while navbat: # navbat bo'shaguncha
mijoz = navbat.pop(0) # boshidagi odamni olamiz
xizmat_qilindi.append(mijoz)
print(f"{mijoz} qabul qilindi. Navbatda: {len(navbat)} kishi")
print("Hammasi:", xizmat_qilindi)
Natija:
Ali qabul qilindi. Navbatda: 2 kishi
Vali qabul qilindi. Navbatda: 1 kishi
Olim qabul qilindi. Navbatda: 0 kishi
Hammasi: ['Ali', 'Vali', 'Olim']
Bir ro'yxatdan ikkinchisiga ko'chirish qolipi ma'lumotni bosqichma-bosqich qayta ishlashda tez-tez ishlatiladi: "kutilayotganlar" → "bajarilganlar".
While lug'atlar bilan
Foydalanuvchi kiritishini lug'atga yig'ish — so'rovnoma qolipi:
sorovnoma = {}
while True:
ism = input("Ism (tugatish — bo'sh qoldiring): ")
if ism == "":
break
javob = input(f"{ism}, sevimli tilingiz: ")
sorovnoma[ism] = javob
print(sorovnoma)
Ali/Python, Vali/Go, so'ng bo'sh kiritilganda Natija:
{'Ali': 'Python', 'Vali': 'Go'}
Eslab qoling
whilesharti har aylanish boshida tekshiriladi;False— tsikl tugadi.- Tanada shartga ta'sir qiluvchi narsa bo'lishi shart — aks holda tsikl cheksiz.
break— butunlay chiqish;continue— shu aylanishni tashlash.while True+break— muloqot dasturlarining standart qolipi.- Bo'sh ro'yxat
False—while royxat:"bo'shaguncha ishla" degani;pop(0)boshidan oladi.
Amaliyot
- 10 dan 1 gacha teskari sanab, oxirida "Start!" deydigan dastur yozing.
- 1 dan 50 gacha faqat 7 ga bo'linadigan sonlarni chiqaring va nechta ekanini sanang.
- Foydalanuvchidan
while Truebilan so'zlar qabul qiling; "stop" deyilganda nechta so'z kiritilganini aytib to'xtang; bo'sh kiritishcontinuebilan o'tkazib yuborilsin. vazifalar = ["dars", "mashq", "test", "loyiha"]ro'yxatini "bo'shaguncha" qolipidabajarilganga ko'chiring; har qadamda qancha qolganini chiqaring.- So'rovnoma qolipini o'zingizga moslang: ism va yosh so'rab lug'atga yig'ing; oxirida eng katta yoshni toping.
- Ataylab cheksiz tsikl yozing, to'xtating, so'ng "bu shart qachon yolg'on bo'ladi?" savoliga javob beradigan qilib tuzating.
Bo'lim testida shu qoliplar so'raladi.