10-bo‘lim
Sikllar
Takrorlanuvchi amallar: for va while sikllari, range(), break, continue, else bloki va enumerate/zip funksiyalari.
Ushbu bo‘lim mundarijasi
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.
shaharlar = ["Toshkent", "Samarqand", "Buxoro"]
for shahar in shaharlar:
print(f"Men {shahar} shahrida bo'lganman")
Men Toshkent shahrida bo'lganman
Men Samarqand shahrida bo'lganman
Men Buxoro shahrida bo'lganman
for istalgan ketma-ketlik bilan ishlaydi:
# 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}")
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:
# 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()
0 1 2 3 4
1 2 3 4 5
0 5 10 15 20
10 8 6 4 2
| Yozuv | Natija |
|---|---|
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 |
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 #
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}")
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 #
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}")
0 Klaviatura
1 Sichqoncha
2 Monitor
---
1. Klaviatura
2. Sichqoncha
3. Monitor
zip() - bir nechta ro'yxatni birga aylanish #
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}")
Husanboy 85 Namangan
Sardor 78 Toshkent
Malika 95 Buxoro
while sikli #
while shart rost bo'lguncha takrorlaydi.
hisoblagich = 5
while hisoblagich > 0:
print(f"Qoldi: {hisoblagich}")
hisoblagich -= 1
print("Start!")
Qoldi: 5
Qoldi: 4
Qoldi: 3
Qoldi: 2
Qoldi: 1
Start!
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.
# 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.")
Parolni kiriting: qwerty
Noto'g'ri. Yana 2 ta urinish qoldi.
Parolni kiriting: python2026
Xush kelibsiz!
break va continue #
# 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()
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.
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")
100 ro'yxatda yo'q
for ... else tub sonlarni tekshirishda juda chiroyli ko'rinadi:
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")
29 - tub son
Ichma-ich sikllar #
# Ko'paytirish jadvali (to'liq)
for satr in range(1, 6):
for ustun in range(1, 6):
print(f"{satr * ustun:>4}", end="")
print()
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
# Uchburchak chizish
balandlik = 5
for satr in range(1, balandlik + 1):
boshliqlar = " " * (balandlik - satr)
yulduzlar = "*" * (2 * satr - 1)
print(boshliqlar + yulduzlar)
*
***
*****
*******
*********
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 #
# ============================================
# 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.")
==================================
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.
fibonachchi.py dasturini yozing:
- Foydalanuvchidan nechta Fibonachchi sonini chiqarishni so'rang.
whilesikli bilan ketma-ketlikni hosil qiling (0, 1, 1, 2, 3, 5, 8...).- Har bir sonni tartib raqami bilan chiqaring (
enumerateishlating). - Qo'shimcha:
for ... elsebilan 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.breaksiklni to'xtatadi,continuejoriy qadamni tashlab ketadi.- Sikldagi
elsebloki faqatbreakbo'lmaganda bajariladi.
Keyingi bo'limda kodni qayta ishlatish uchun funksiyalar yaratishni o'rganamiz.
O‘qish tarixini saqlamoqchimisiz?
Tizimga kirsangiz, tugatgan bo‘limlaringiz saqlanadi va qoldirgan joyingizdan davom etasiz.
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.