while sikli — qachon for emas, cheksiz loop, break, else
Muammodan boshlaylik
Tasavvur qiling: ATM da parol kiritilmoqda. To'g'ri parol kiritilgunga qadar so'raydi. Necha marta so'raydi? Bilmaymiz — 1 martami, 3 martami, 10 martami? for sikli ma'lum miqdorda ishlaydi. Bu holatda esa miqdor oldindan noma'lum.
while — aynan shu holatlar uchun.
while sikli
while — shart True bo'lgan vaqt davom etadi:
son = 1
while son <= 5:
print(son)
son += 1
1
2
3
4
5
Qanday ishlaydi:
- Shart tekshiriladi:
son <= 5—True? - Ha — blok bajariladi
- Yana 1-qadamga qaytadi
- Shart
Falsebo'lguncha davom etadi
for vs while — qachon qaysi?
Bu savol muhim — to'g'ri tanlov kodni oson qiladi:
| Holat | Tanlov |
|---|---|
| Necha marta — ma'lum | for |
| To'plam ustida ishlash | for |
| Shart bajarilgunga qadar | while |
| Foydalanuvchi kiritishini kutish | while |
# for — 10 marta, aniq
for i in range(10):
print(i)
# while — to'g'ri son kiritilgunga qadar
son = int(input("1-10 oralig'ida son: "))
while son < 1 or son > 10:
print("Xato! Qaytadan kiriting.")
son = int(input("Son: "))
Cheksiz loop va break
while True — ataylab cheksiz. break bilan kerak bo'lganda to'xtatiladi:
while True:
parol = input("Parolni kiriting: ")
if parol == "1234":
print("Xush kelibsiz!")
break
print("Noto'g'ri parol.")
Bu pattern foydalanuvchi kiritishida keng ishlatiladi. Nima uchun while True va break — while parol != "1234" emas? Chunki birinchi marta kiritishdan oldin parol o'zgaruvchisi yo'q. while True bilan bu muammoni aylanib o'tamiz.
Urinishlar sonini cheklash:
MAX = 3
urinish = 0
while True:
parol = input("Parol: ")
urinish += 1
if parol == "1234":
print("Kirdi!")
break
if urinish >= MAX:
print("Hisob bloklandi.")
break
print(f"Noto'g'ri. Qoldi: {MAX - urinish} ta urinish.")
continue — while da
son = 0
while son < 10:
son += 1
if son % 2 == 0:
continue # juft sonni o'tkazib yubor
print(son) # faqat toqlar: 1, 3, 5, 7, 9
while / else
break bilan tugamagan bo'lsa — else ishlaydi:
urinish = 0
while urinish < 3:
taxmin = int(input("1-10 oralig'ida taxmin: "))
urinish += 1
if taxmin == 7:
print(f"To'g'ri! {urinish} urinishda topdingiz.")
break
else:
print("3 urinish tugadi. Javob: 7")
Amaliy misol — o'yin
import random
sir = random.randint(1, 100)
urinish = 0
print("Men 1-100 oralig'ida son o'yladim. Toping!")
while True:
taxmin = int(input("Taxminingiz: "))
urinish += 1
if taxmin < sir:
print("Kattaroq!")
elif taxmin > sir:
print("Kichikroq!")
else:
print(f"Barakalla! {urinish} urinishda topdingiz.")
break
Tez-tez uchraydigan xatolar
Cheksiz loop — shart hech o'zgarmaydi:
son = 1
while son <= 5:
print(son)
# ❌ son += 1 unutildi — doim 1 chiqadi, to'xtamaydi
Agar dastur to'xtamasa — Ctrl+C bilan to'xtatiladi.
Boshdanoq shart False bo'lishi:
son = 10
while son < 5: # ← 10 < 5 — False, bir martaham bajarilmaydi
print(son)
son -= 1
Agar blok hech bajarilmayotgan bo'lsa — shartni tekshiring.
break ni unutish — cheksiz loop:
while True:
parol = input("Parol: ")
if parol == "1234":
print("Kirdi!")
# ❌ break yo'q — "Kirdi!" chiqadi lekin to'xtamaydi
Xulosa
while — shart True bo'lgan vaqt ishlaydi. Necha marta — oldindan noma'lum.
Eslab qoling:
while shart:— shartFalsebo'lgunchawhile True: ... break— cheksiz loop, kerak bo'lganda to'xtatiladicontinue— joriy iteratsiyani o'tkazadiwhile/else—breakbo'lmasaelseishlaydi- Shart har iteratsiyada o'zgarishiga ishonch hosil qiling
Keyingi dars
9-dars: String — slicing, metodlar, immutability