Shartlar — if, elif, else, ternary expression

~12 daq · Python · Kirish va Asoslar

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, birinchi True bajariladi
  • Indent majburiy — 4 bo'sh joy
  • Bo'sh matn, 0, [], None — False sifatida 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