10 / 59

Python while Loop

While sikli bilan tanishish

Pythonda while sikli berilgan shart True bo'lguncha kod blokini ishga tushirish uchun ishlatiladi.

While Loop sintaksisi

kod
while shart:
    # Shu kod blokini ishga tushirish

Yuqoridagi kodni shunday o'qing: shart to'g'ri (true) bo'lar ekan, shu kod blokini ishga tushiring.

Bu shuni anglatadiki, sikl faqat shart False bo'lganda to'xtaydi. Agar shart hech qachon False bo'lmasa, sikl hech qachon to'xtamaydi va bu cheksiz sikl (infinite loop) hosil qiladi.

Python while Loop blok-sxemasi

Python while Loop blok-sxemasi

Avval cheksiz siklga misolni ko'rib chiqamiz. Keyin uni qanday boshqarishni ko'rasiz.

Misol: Cheksiz while sikli

example.py
number = float(input("Enter a number: "))

while number >= 0.0:
    print(number)

Natija

kod
Enter a number: 12.0
12.0
12.0
12.0
...

Bu yerda, agar foydalanuvchi 12.0 kabi manfiy bo'lmagan son kiritsa, number >= 0.0 True bo'ladi va son chop etiladi.

number o'zgaruvchisi hech qachon o'zgarmagani uchun, number >= 0.0 doim True bo'lib qoladi. Natijada, bir xil son har bir iteratsiyada qayta-qayta chop etiladi.

Misol: Chekli while sikli

Yuqoridagi dasturning cheksiz sikl muammosini hal qilish uchun, sikl tanasiga number uchun kiritma olish kodini qo'shishimiz mumkin. Shunda keyingi safar number >= 0.0 baholanganida, uning natijasi boshqacha bo'lishi mumkin.

example.py
number = float(input("Enter a number: "))

while number >= 0.0:
    print(number)
    
    # Yana number kiritmasini olish
    number = float(input("Enter another number: "))

Natija

kod
Enter a number: 12.0
12.0
Enter another number: 5.5
5.5
Enter another number: -2.1

Agar bu dastur sizni chalg'itayotgan bo'lsa, har bir qadamda nima bo'lishini ko'rish uchun har doim yuqoridagi "Visualize" tugmasini bosishingiz mumkin.

Chekinish (Indentation)

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

example.py
task = input("Task: ")

while task != "q":
    print("Task done!")
    task = input("Task: ")

# Bu operator sikldan tashqarida
print("All tasks completed")

Natija

kod
Task: Cooking
Task done!
Task: Cleaning
Task done!
Task: q
All tasks completed

Bu yerda print("All tasks completed") sikldan tashqarida va faqat oxirida bir marta bajariladi.

Misol: 1 dan n gacha sonlarni chop etish

example.py
n = 10
i = 1

while i <= n:
    print(i)
    i += 1 

Natija

kod
1
2
...
10

Bu yerda ining qiymati har bir iteratsiyada chop etiladi va 1ga oshiriladi. i 11ga aylanganda, i <= n False bo'ladi va sikl tugaydi.

Agar siklni ma'lum marta (masalan, n marta) aylantirayotgan bo'lsak, bunday vazifalarni for sikli yordamida bajarish osonroq. Yuqoridagi dastur quyidagisiga teng:

example.py
n = 10

# i = 1 dan n gacha aylanib chiqish
for i in range(1, n+1):
    print(i)

Misol: Foydalanuvchi nol kiritmaguncha sonlarni qo'shish

Bu dasturda biz foydalanuvchi nol kiritmaguncha, u kiritgan sonlarni birma-bir qo'shib boramiz. Foydalanuvchi 0 kiritganda, siklni tugatamiz va yig'indini ko'rsatamiz.

example.py
total = 0
n = float(input("Enter a number (0 to stop): "))

while n != 0.0:
    total += n
    n = float(input("Enter a number (0 to stop): "))

print(f"Sum: {total}")

Natija

kod
Enter a number (0 to stop): 12.5
Enter a number (0 to stop): 11
Enter a number (0 to stop): 10
Enter a number (0 to stop): 0
Sum: 33.5

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

Break va continue operatorlari

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

break operatori

break operatori u uchraganida while siklini darhol tugatadi. Masalan,

example.py
while True:
    number = int(input("Enter a number: "))
    if number == 0:
        break
    print(number)

Natija

kod
Enter a number: 12
12
Enter a number: 5
5
Enter a number: 0

Bu yerda sikl sharti doim True. Bu siklni tugatishning yagona yo'li — break operatoridan foydalanish. Bu foydalanuvchi kiritma sifatida 0 kiritganda sodir bo'ladi.

continue operatori

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

example.py
i = 0

while i <= 10:
    i += 1
    
    # Toq sonlarni o'tkazib yuborish
    if i % 2 != 0:
        continue

    print(i)

Natija

kod
2
4
6
8
10

while sikli i 10dan kichik yoki teng bo'lguncha ishlaydi. Biroq, i toq bo'lganda, continue operatori bajariladi, bu esa undan keyingi qolgan kodni (print operatorini) o'tkazib yuborib, keyingi iteratsiyaga o'tadi. Shuning uchun natijada faqat juft sonlar ko'rsatiladi.

Else operatori bilan While Loop

while 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
attempts = 3

while attempts > 0:
    pin = input("Enter PIN: ")

    if pin == "1212":
        print("Access granted.")
        break

    attempts -= 1
    print(f"Wrong PIN. {attempts} tries left.")
else:
    print("Account locked. Too many failed attempts.")

1-natija

kod
Enter PIN: 1111
Wrong PIN. 2 tries left.
Enter PIN: 1212
Access granted.

2-natija

kod
Enter PIN: 1111
Wrong PIN. 2 tries left.
Enter PIN: 2222
Wrong PIN. 1 tries left.
Enter PIN: 3333
Wrong PIN. 0 tries left.
Account locked. Too many failed attempts.

Bu yerdagi mantiq:

  • Agar to'g'ri PIN kiritilsa, break operatori siklni tugatadi va else ichidagi "hisob bloklandi" xabari ko'rsatilmaydi.
  • Agar noto'g'ri PIN uch marta kiritilsa, sikl sharti attempts > 0 False bo'ladi va sikl shu sababdan tugaydi. Bu holatda "hisob bloklandi" xabari else operatori ichida ko'rsatiladi.
QBilimingizni sinab ko'ring
1 / 3

1. while sikli qachon to'xtaydi?