10-bo‘lim

Sikllar

Takrorlanuvchi amallar: for va while sikllari, range(), break, continue, else bloki va enumerate/zip funksiyalari.

🕑 15 daqiqa o‘qish 📄 400 so‘z 👁 9 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. for sikli
  2. range() funksiyasi
  3. Ko'paytirish jadvali
  4. enumerate() - indeks bilan birga
  5. zip() - bir nechta ro'yxatni birga aylanish
  6. while sikli
  7. Qachon while ishlatiladi?
  8. break va continue
  9. Sikldagi else bloki
  10. Ichma-ich sikllar
  11. Amaliy misol: bank hisobi menyusi
  12. Xulosa

Kompyuterning eng katta afzalligi - bir xil ishni charchamasdan million marta bajara olishi. Bu ishni sikllar boshqaradi.

for sikli #

for ketma-ketlikdagi har bir element bo'ylab yuradi.

Python
shaharlar = ["Toshkent", "Samarqand", "Buxoro"]

for shahar in shaharlar:
    print(f"Men {shahar} shahrida bo'lganman")
Natija
Men Toshkent shahrida bo'lganman
Men Samarqand shahrida bo'lganman
Men Buxoro shahrida bo'lganman

for istalgan ketma-ketlik bilan ishlaydi:

Python
# Satr bo'ylab
for belgi in "Python":
    print(belgi, end=" ")
print()

# Lug'at bo'ylab
narxlar = {"olma": 12000, "anor": 25000}
for mahsulot, narx in narxlar.items():
    print(f"{mahsulot}: {narx:,} so'm")

# Kortejlar ro'yxati bo'ylab
talabalar = [("Husanboy", 85), ("Sardor", 78)]
for ism, baho in talabalar:
    print(f"{ism} -> {baho}")
Natija
P y t h o n 
olma: 12,000 so'm
anor: 25,000 so'm
Husanboy -> 85
Sardor -> 78

range() funksiyasi #

Ma'lum miqdorda takrorlash uchun:

Python
# range(oxiri) - 0 dan boshlaydi
for son in range(5):
    print(son, end=" ")
print()

# range(boshi, oxiri)
for son in range(1, 6):
    print(son, end=" ")
print()

# range(boshi, oxiri, qadam)
for son in range(0, 21, 5):
    print(son, end=" ")
print()

# Teskari
for son in range(10, 0, -2):
    print(son, end=" ")
print()
Natija
0 1 2 3 4 
1 2 3 4 5 
0 5 10 15 20 
10 8 6 4 2 
YozuvNatija
range(5)0, 1, 2, 3, 4
range(2, 6)2, 3, 4, 5
range(0, 10, 3)0, 3, 6, 9
range(5, 0, -1)5, 4, 3, 2, 1
Oxirgi qiymat kirmaydi

range(1, 6) → 1, 2, 3, 4, 5 (6 emas). Bu boshida chalkash tuyuladi, lekin range(len(royxat)) yozganda juda qulay ekani ma'lum bo'ladi.

Ko'paytirish jadvali #

Python
son = 7

print(f"{son} ning ko'paytirish jadvali:")
print("-" * 22)
for koeffitsient in range(1, 11):
    natija = son * koeffitsient
    print(f"{son:>3} x {koeffitsient:>2} = {natija:>3}")
Natija
7 ning ko'paytirish jadvali:
----------------------
  7 x  1 =   7
  7 x  2 =  14
  7 x  3 =  21
  7 x  4 =  28
  7 x  5 =  35
  7 x  6 =  42
  7 x  7 =  49
  7 x  8 =  56
  7 x  9 =  63
  7 x 10 =  70

enumerate() - indeks bilan birga #

Python
mahsulotlar = ["Klaviatura", "Sichqoncha", "Monitor"]

# Yomon usul
for i in range(len(mahsulotlar)):
    print(i, mahsulotlar[i])

print("---")

# Pythonchasiga
for tartib, mahsulot in enumerate(mahsulotlar, start=1):
    print(f"{tartib}. {mahsulot}")
Natija
0 Klaviatura
1 Sichqoncha
2 Monitor
---
1. Klaviatura
2. Sichqoncha
3. Monitor

zip() - bir nechta ro'yxatni birga aylanish #

Python
ismlar = ["Husanboy", "Sardor", "Malika"]
baholar = [85, 78, 95]
shaharlar = ["Namangan", "Toshkent", "Buxoro"]

for ism, baho, shahar in zip(ismlar, baholar, shaharlar):
    print(f"{ism:<10}{baho:>4}  {shahar}")
Natija
Husanboy    85  Namangan
Sardor      78  Toshkent
Malika      95  Buxoro

while sikli #

while shart rost bo'lguncha takrorlaydi.

Python
hisoblagich = 5

while hisoblagich > 0:
    print(f"Qoldi: {hisoblagich}")
    hisoblagich -= 1

print("Start!")
Natija
Qoldi: 5
Qoldi: 4
Qoldi: 3
Qoldi: 2
Qoldi: 1
Start!
Cheksiz sikl
Python
son = 5
while son > 0:
    print(son)
    # son -= 1  ni unutdik!

Bu dastur hech qachon to'xtamaydi. Uni Ctrl + C bilan to'xtatasiz. Har doim siklni tugatadigan o'zgarishni yozganingizga ishonch hosil qiling.

Qachon while ishlatiladi? #

for - takrorlar soni oldindan ma'lum bo'lganda. while - takrorlar soni shartga bog'liq bo'lganda.

Python
# Foydalanuvchi to'g'ri javob bergunicha so'rash
TOGRI_PAROL = "python2026"
urinishlar = 0

while urinishlar < 3:
    parol = input("Parolni kiriting: ")
    urinishlar += 1

    if parol == TOGRI_PAROL:
        print("Xush kelibsiz!")
        break
    else:
        qolgan = 3 - urinishlar
        if qolgan > 0:
            print(f"Noto'g'ri. Yana {qolgan} ta urinish qoldi.")
        else:
            print("Urinishlar tugadi. Hisob bloklandi.")
Natija
Parolni kiriting: qwerty
Noto'g'ri. Yana 2 ta urinish qoldi.
Parolni kiriting: python2026
Xush kelibsiz!

break va continue #

break - siklni butunlay to'xtatadi 1-iteratsiya 2-iteratsiya break → chiqish continue - shu qadamni tashlab ketadi 1-iteratsiya continue → keyingi 3-iteratsiya
break siklni tugatadi, continue esa faqat joriy qadamni o'tkazib yuboradi
Python
# break - birinchi mos kelganda to'xtash
sonlar = [4, 8, 15, 16, 23, 42]

for son in sonlar:
    if son > 15:
        print(f"15 dan katta birinchi son: {son}")
        break

print("---")

# continue - ba'zi elementlarni o'tkazib yuborish
for son in range(1, 11):
    if son % 2 != 0:
        continue        # toq sonlarni tashlab ketamiz
    print(son, end=" ")
print()
Natija
15 dan katta birinchi son: 16
---
2 4 6 8 10 

Sikldagi else bloki #

Python'ning kam ma'lum, lekin foydali imkoniyati. else bloki sikl break siz tugaganda bajariladi.

Python
sonlar = [4, 8, 15, 16, 23, 42]
qidirilayotgan = 100

for son in sonlar:
    if son == qidirilayotgan:
        print("Topildi!")
        break
else:
    print(f"{qidirilayotgan} ro'yxatda yo'q")
Natija
100 ro'yxatda yo'q
Tub sonni tekshirish

for ... else tub sonlarni tekshirishda juda chiroyli ko'rinadi:

Python
son = 29

for boluvchi in range(2, int(son ** 0.5) + 1):
    if son % boluvchi == 0:
        print(f"{son} tub emas ({boluvchi} ga bo'linadi)")
        break
else:
    print(f"{son} - tub son")
Natija
29 - tub son

Ichma-ich sikllar #

Python
# Ko'paytirish jadvali (to'liq)
for satr in range(1, 6):
    for ustun in range(1, 6):
        print(f"{satr * ustun:>4}", end="")
    print()
Natija
   1   2   3   4   5
   2   4   6   8  10
   3   6   9  12  15
   4   8  12  16  20
   5  10  15  20  25
Python
# Uchburchak chizish
balandlik = 5

for satr in range(1, balandlik + 1):
    boshliqlar = " " * (balandlik - satr)
    yulduzlar = "*" * (2 * satr - 1)
    print(boshliqlar + yulduzlar)
Natija
    *
   ***
  *****
 *******
*********
Ichma-ich sikl tezligi

Ikkita ichma-ich sikl n ta element uchun n * n marta ishlaydi. 1000 ta element = million amal. Uch daraja bo'lsa - milliard. Katta ma'lumotlar bilan ishlaganda buni yodda tuting.

Amaliy misol: bank hisobi menyusi #

Python
# ============================================
# Oddiy bank terminali
# ============================================

balans = 500_000
tarix = []

while True:
    print("\n" + "=" * 34)
    print(f"{'BANK TERMINALI':^34}")
    print("=" * 34)
    print(f"Balans: {balans:,} so'm")
    print("-" * 34)
    print("1 - Hisobni to'ldirish")
    print("2 - Pul yechish")
    print("3 - Amallar tarixi")
    print("0 - Chiqish")

    tanlov = input("\nTanlovingiz: ").strip()

    if tanlov == "0":
        print("Xayr! Xizmatimizdan foydalanganingiz uchun rahmat.")
        break

    elif tanlov == "1":
        summa = int(input("Summa: "))
        if summa <= 0:
            print("Summa musbat bo'lishi kerak.")
            continue
        balans += summa
        tarix.append(("To'ldirish", summa))
        print(f"+{summa:,} so'm qabul qilindi.")

    elif tanlov == "2":
        summa = int(input("Summa: "))
        if summa > balans:
            print("Mablag' yetarli emas!")
            continue
        balans -= summa
        tarix.append(("Yechish", summa))
        print(f"-{summa:,} so'm berildi.")

    elif tanlov == "3":
        if not tarix:
            print("Amallar tarixi bo'sh.")
            continue
        print("\nAmallar tarixi:")
        for tartib, (turi, summa) in enumerate(tarix, start=1):
            belgi = "+" if turi == "To'ldirish" else "-"
            print(f"  {tartib}. {turi:<14}{belgi}{summa:>12,}")

    else:
        print("Noto'g'ri tanlov, qaytadan urinib ko'ring.")
Natija
==================================
          BANK TERMINALI          
==================================
Balans: 500,000 so'm
----------------------------------
1 - Hisobni to'ldirish
2 - Pul yechish
3 - Amallar tarixi
0 - Chiqish

Tanlovingiz: 1
Summa: 250000
+250,000 so'm qabul qilindi.
Amaliy topshiriq

fibonachchi.py dasturini yozing:

  1. Foydalanuvchidan nechta Fibonachchi sonini chiqarishni so'rang.
  2. while sikli bilan ketma-ketlikni hosil qiling (0, 1, 1, 2, 3, 5, 8...).
  3. Har bir sonni tartib raqami bilan chiqaring (enumerate ishlating).
  4. Qo'shimcha: for ... else bilan ketma-ketlikda 100 dan katta birinchi sonni toping.

Xulosa #

  • for - ketma-ketlik bo'ylab, while - shart rost bo'lguncha takrorlaydi.
  • range(boshi, oxiri, qadam) sonlar ketma-ketligini hosil qiladi; oxirgi qiymat kirmaydi.
  • enumerate() indeks bilan, zip() bir nechta ro'yxat bilan birga ishlaydi.
  • break siklni to'xtatadi, continue joriy qadamni tashlab ketadi.
  • Sikldagi else bloki faqat break bo'lmaganda bajariladi.

Keyingi bo'limda kodni qayta ishlatish uchun funksiyalar yaratishni o'rganamiz.

Xatolik topdingizmi?

Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.