09 / 59

Python for Loop

For sikli bilan tanishish

Pythonda for operatori ro'yxatlar, satrlar va lug'atlar kabi har qanday iterable (aylanib chiqish mumkin bo'lgan) obyekt bo'ylab aylanib chiqish uchun ishlatiladi.

For loop sintaksisi

kod
for element in ketma-ketlik:
    # Shu kod blokini ishga tushirish

Yuqoridagi kodni shunday o'qing: ketma-ketlikdagi har bir element uchun shu kod blokini ishga tushiring.

Misol: Ro'yxat bo'ylab aylanib chiqish

Keling, uchta elementdan iborat ro'yxat bo'ylab aylanib chiqamiz:

example.py
# Uchta AI modeldan iborat ro'yxat
models = ["Fable", "ChatGPT", "Gemini"]

# Ro'yxat elementlariga birma-bir kirish
for model in models:
    print(model)
    print("---")

Natija

kod
Fable
---
ChatGPT
---
Gemini
---

Yuqoridagi kodni shunday o'qing: models ro'yxatidagi har bir model uchun shu kodni ishga tushiring:

example.py
print(model)
print("---")

models ro'yxati uchta elementga ega bo'lgani uchun, modelning qiymati quyidagicha bo'ladi:

  • 1-iteratsiyada "Fable".
  • 2-iteratsiyada "ChatGPT".
  • 3-iteratsiyada "Gemini".

Eslatma: Agar dasturni kuzatish qiyin bo'lsa, har qanday kod misoli ostidagi Visualize tugmasini bosib, kodni qatordan-qatorga ishga tushiring va har bir qadamda nima bo'lishini ko'ring.

Sikldagi chekinish (Indentation)

Chekinish (operator boshidagi bo'shliqlar) Python sintaksisining bir qismi. Biz chekinishdan siklning tanasi kabi kod blokini belgilash uchun foydalanamiz. Masalan,

example.py
numbers = [1, 2, 3]

for num in numbers:
    print(f"Processing: {num}")
    print(f"Done with: {num}")

# Bu operator sikldan tashqarida
print('All done')

Natija

kod
Processing: 1
Done with: 1
Processing: 2
Done with: 2
Processing: 3
Done with: 3
All done

Bu yerda print('All done') sikldan tashqarida. Shuning uchun bu operator faqat oxirida bir marta bajariladi.

Python range() bilan for loop

Dasturlashda keng tarqalgan vazifalardan biri kodni ma'lum bir marta (masalan, 10 marta) takrorlash. Masalan, 100 ta mahsulotdan iborat ro'yxatdan sahifada 10 ta mahsulotni ko'rsatish.

Bunday vazifalarni for sikli ichida range() funksiyasidan foydalanib bajarishingiz mumkin. Buning sababi, range() funksiyasi sonlar ketma-ketligini qaytaradi. Masalan,

example.py
# 1 dan 4 gacha sonlarni generatsiya qilish
values = range(1, 5)

Bu yerda range(1, 5) 1, 2, 3 va 4 dan iborat ketma-ketlikni qaytaradi. range() funksiyasi sonlar ketma-ketligini qaytargani uchun, biz uning bo'ylab aylanib chiqishimiz mumkin. Masalan,

example.py
# i = 1 dan i = 10 gacha aylanib chiqish
for i in range(1, 11):
    print(f"Displaying product {i}")

Natija

kod
Displaying Product 1
Displaying Product 2
... 
Displaying Product 10

Misol: Satr bo'ylab aylanib chiqish

Agar satr bo'ylab aylanib chiqsak, satrning har bir belgisini birma-bir olamiz.

example.py
language = 'Python'

for x in language:
    print(x)

Natija

kod
P
y
t
h
o
n

Break va continue operatorlari

break va continue operatorlari sikllarning oqimini o'zgartirish uchun ishlatiladi.

break operatori

break operatori u uchraganida for siklini darhol tugatadi. Masalan,

example.py
for num in range(1, 11):
    if num == 3:
        break
    print(num)

Natija

kod
1
2

range(1, 11) 1 dan 10 gacha sonlar ketma-ketligini yaratadi. Biroq, num 3ga teng bo'lganda, break operatori bajariladi, bu esa siklni darhol tugatadi. Shuning uchun faqat 1 va 2 chop etiladi.

continue operatori

continue operatori siklning joriy iteratsiyasini o'tkazib yuboradi va keyingi iteratsiya bilan davom etadi. Masalan,

example.py
for num in range(1, 6):
    if num == 3:
        continue
    print(num)

Natija

kod
1
2
4
5

range(1, 6) 1 dan 5 gacha ketma-ketlik yaratadi. Biroq, num 3ga teng bo'lganda, continue operatori bajariladi, bu esa undan keyingi qolgan kodni o'tkazib yuborib, keyingi iteratsiyaga o'tadi. Shuning uchun natijada 3 ko'rsatilmaydi.

break va continue operatorlari haqida ko'proq ma'lumotni shu yerdan topishingiz mumkin.

else bilan for loop

for sikli ixtiyoriy else operatoriga ega bo'lishi mumkin. Bu xususiyat faqat Pythonga xos bo'lib, boshqa ko'pgina tillarda uchramaydi.

else operatori ichidagi kod sikl tugagandan so'ng bajariladi. Biroq, agar sikl break operatori yordamida tugatilgan bo'lsa, else bloki bajarilmaydi. Masalan,

example.py
stock = ['Laptop', 'Keyboard', 'Mouse']

order = input("Enter the product you want to buy: ")

for product in stock:
    if product == order:
        print(f"{order} is available. Adding to cart.")
        break
else:
    print(f"Sorry, {order} is out of stock.")

1-natija

kod
Enter the product you want to buy: Laptop
Laptop is available. Adding to cart.

2-natija

kod
Enter the product you want to buy: Monitor
Sorry, Monitor is out of stock.

Bu yerdagi mantiq:

  • Agar mahsulot omborda bo'lsa, break operatori siklni tugatadi va else ichidagi "omborda yo'q" xabari ko'rsatilmaydi.
  • Agar mahsulot omborda bo'lmasa, "omborda yo'q" xabari ko'rsatiladi, chunki break operatoriga hech qachon duch kelinmaydi.

Elementlarni ishlatmasdan for loop ishlatish

Agar sikl ichida ketma-ketlik elementlaridan foydalanishni mo'ljallamayotgan bo'lsangiz, sikl o'zgaruvchisi sifatida _ (pastki chiziq) dan foydalanish tushunarliroq bo'ladi. Masalan,

example.py
# i = 0 dan 3 gacha aylanib chiqish
for _ in range(0, 4):
    print("Hi")

Natija

kod
Hi
Hi
Hi
Hi

Bu yerda sikl to'rt marta aylanadi va har bir iteratsiyada "Hi"ni chop etadi.

Misol: Natural sonlar yig'indisi

Endi for sikli qanday ishlashini bilganimizdan so'ng, keling, natural sonlar yig'indisini hisoblovchi qiziqarli dastur yarataylik.

Bu dasturda biz 1 dan 10 gacha bo'lgan sonlarning yig'indisini topamiz.

example.py
# Yig'indining boshlang'ich qiymati 0
total = 0

# i = 1 dan 10 gacha aylanib chiqish
for i in range(1, 11):
    total += i   # Har bir qadamda i ni total ga qo'shish

print(f"Total = {total}")

Natija

kod
Total = 55

Bu yerda sikl i = 1 dan 10gacha aylanadi. Har bir iteratsiyada biz ining joriy qiymatini total o'zgaruvchisiga qo'shamiz. Yakuniy total — 1 dan 10 gacha bo'lgan sonlarning yig'indisi.

Yana bir bor, agar bu dasturni kuzatishda qiynalsangiz, har bir qadamda aynan nima bo'lishini ko'rish uchun yuqoridagi Visualize tugmasini bosing.

Ichma-ich for sikllari (Nested for loops)

Sikl o'z ichida boshqa siklni ham o'z ichiga olishi mumkin, bu nested loop (ichma-ich sikl) deb ataladi. Ichma-ich siklda, ichki sikl tashqi siklning har bir iteratsiyasi uchun bir marta bajariladi.

example.py
attributes = ['Electric', 'Fast']
cars = ['Tesla', 'Porsche', 'Mercedes']

# Tashqi sikl
for attribute in attributes:
    # Ichki sikl
    for car in cars:
        print(attribute, car)
    
    # Bu operator ichki sikldan tashqarida
    print("-----")

Natija

kod
Electric Tesla
Electric Porsche
Electric Mercedes
-----
Fast Tesla
Fast Porsche
Fast Mercedes
-----
QBilimingizni sinab ko'ring
1 / 3

1. range(1, 5) funksiyasi qanday sonlar ketma-ketligini qaytaradi?