Shartlar — if, elif, else, ternary expression
Muammodan boshlaylik
Tasavvur qiling: bankomatda pul yechmoqchisiz. Balans yetarlimi? — Pul chiqadi. Yetarlimas? — "Mablag' yetarli emas" deydi. Karta bloklanganmi? — "Karta blokda" deydi.
Har qanday tizim har daqiqada o'ylab qarorlar qabul qiladi. "Agar bu bo'lsa — shunu qil, aks holda — buni qil." Bu — shartli gaplar.
if — asosiy shart
balans = 150_000
yechish = 100_000
if balans >= yechish:
print("Pul chiqdi")
Shart True bo'lsa — blok bajariladi. False bo'lsa — o'tkazib yuboriladi.
Indent majburiy. Python da bloklar figurali qavslar {} bilan emas — 4 bo'sh joy bilan ajratiladi:
if balans >= yechish:
print("Pul chiqdi") # ← 4 bo'sh joy — blok ichida
print("Yangi balans...") # ← bu ham blok ichida
print("Amal tugadi") # ← bo'sh joy yo'q — blok tashqarida
if / else
balans = 50_000
yechish = 100_000
if balans >= yechish:
print("Pul chiqdi")
else:
print("Mablag' yetarli emas")
if / elif / else
Bir nechta shart — elif (else if ning qisqartmasi):
ball = 75
if ball >= 90:
baho = "A'lo"
elif ball >= 75:
baho = "Yaxshi"
elif ball >= 60:
baho = "Qoniqarli"
else:
baho = "Qayta topshirish"
print(f"Natija: {baho}") # Natija: Yaxshi
Python yuqoridan pastga tekshiradi — birinchi True bo'lgan shart bajariladi, qolganlariga qaralmasdan.
Tartib muhim. Kengroq shart avval kelsa — tor shart hech bajarilmaydi:
# ❌ Noto'g'ri tartib
if ball >= 60:
print("Qoniqarli") # ball=95 bo'lsa ham bu chiqadi
elif ball >= 90:
print("A'lo") # hech qachon yetib kelmasdan
# ✅ To'g'ri — qat'iyroq shart avval
if ball >= 90:
print("A'lo")
elif ball >= 60:
print("Qoniqarli")
Nima uchun shunday?
Nima uchun Python figurali qavslar o'rniga indent ishlatadi?
Boshqa tillarda kod bunday ko'rinishi mumkin:
// Java — qavslar bor, indent yo'q — ishlaydi lekin o'qish qiyin
if (ball >= 90) {
print("A'lo"); print("Zo'r");
}
Python da indent — majburiy. Bu dasturchilarni "tartibli yozish"ga majburlaydi. Natijada barcha Python kodi bir xil ko'rinishda bo'ladi — o'qish osonlashadi.
Shart sifatida istalgan qiymat
Shartda True/False bo'lmasligi ham mumkin:
ism = "Jasur"
if ism: # bo'sh bo'lmagan matn — True
print(f"Salom, {ism}!")
royxat = []
if royxat: # bo'sh ro'yxat — False
print("Elementlar bor")
else:
print("Ro'yxat bo'sh")
balans = 0
if balans: # 0 — False
print("Pul bor")
else:
print("Hisob bo'sh")
Ternary expression — bir qatorli shart
Sodda holatlarda if/else ni bir qatorda yozish:
yosh = 20
# Oddiy if/else — 3 qator
if yosh >= 18:
holat = "Katta"
else:
holat = "Yosh"
# Ternary — 1 qator
holat = "Katta" if yosh >= 18 else "Yosh"
print(holat) # Katta
Sintaksis: [True qiymati] if [shart] else [False qiymati]
# print ichida
print("Juft" if 10 % 2 == 0 else "Toq") # Juft
# Chegirma hisoblash
chegirma = 0.15 if premium else 0.05
Murakkab mantiq uchun oddiy if/else yaxshiroq — ternary faqat sodda holatlarda ishlating.
Ichma-ich shartlar — ehtiyot bo'ling
# ❌ Chuqur ichma-ich — o'qish qiyin
if yosh >= 18:
if daromad >= 2_000_000:
if kredit_tarixi == "yaxshi":
print("Kredit tasdiqlandi")
else:
print("Kredit tarixi yomon")
else:
print("Daromad yetarli emas")
else:
print("Yosh yetarli emas")
# ✅ Erta qaytish (early return) — tekis, o'qish oson
if yosh < 18:
print("Yosh yetarli emas")
elif daromad < 2_000_000:
print("Daromad yetarli emas")
elif kredit_tarixi != "yaxshi":
print("Kredit tarixi yomon")
else:
print("Kredit tasdiqlandi")
Bir xil natija — lekin ikkinchisi o'qish uchun ancha qulay. Real loyihalarda bu farq juda katta ahamiyatga ega.
Tez-tez uchraydigan xatolar
Indent xatosi:
if True:
print("Salom") # ❌ IndentationError — 4 bo'sh joy yo'q
elif o'rniga if yozish:
ball = 85
if ball >= 90:
print("A'lo")
if ball >= 75: # ❌ — bu ham tekshiriladi
print("Yaxshi") # ikkalasi ham chiqadi
# ✅
if ball >= 90:
print("A'lo")
elif ball >= 75: # ← elif — faqat biri bajariladi
print("Yaxshi")
= va == aralashuvi:
x = 5
if x = 10: # ❌ SyntaxError
print("O'n")
if x == 10: # ✅
print("O'n")
Xulosa
Shartli gaplar — dasturning "qaror qabul qilish" qismi.
Eslab qoling:
if/elif/else— yuqoridan pastga tekshiriladi, birinchiTruebajariladi- Indent majburiy — 4 bo'sh joy
- Bo'sh matn,
0,[],None—Falsesifatida ko'riladi - Tartib muhim: qat'iyroq shart avval
- Ternary
"A" if shart else "B"— sodda holatlarda
Keyingi dars
7-dars: for sikli — range(), enumerate(), zip(), break, continue