AXV

Tanlash operatori: match / case

Python 3.10+ Pattern Matching va rasmiy amaliy topshiriqlar

9-sinfAdvanced Back-end va DevOps3-hafta · 9-dars

Bugun nimalarni o‘rganamiz?

match / case nima?

1.46-rasm: Tanlash operatorining umumiy sintaksisi

Menyu & Kunlar

1.47 va 1.48-rasmlar: 1–7 kunlar va boshqaruv menyusi

3 ta amaliy topshiriq

3 ga karralilar (for/while) va 12 ta oy nomlari dasturi

Nega match / case kiritildi?

Eski usul (if / elif)

Har bir qatorda o'zgaruvchini qayta yozish kerak: if x == 1: elif x == 2:

Variantlar ko'paysa o'qish qiyinlashadi

Yangi usul (match / case)

Bitta match x: orqali barcha variantlar qatorlarga ajratiladi

Ixcham, tushunarli va tezkor

01

match / case sintaksisi

1.46-rasm: Qiymat, variantlar va boshqa holatlar (_)

match / case tuzilishi

match tanlov: Tekshiriluvchi qiymat case 1: print("Dastur boshlandi") case 2: print("Sozlamalar ochildi") case 3: print("Dastur yopildi") case _: print("Noto'g'ri tanlov") (else kabi)

Dastur menyusi kodi (1.47-rasm)

tanlov = int(input("Tanlovni kiriting (1-3): "))

match tanlov:
    case 1:
        print("Dastur boshlandi")
    case 2:
        print("Sozlamalar ochildi")
    case 3:
        print("Dastur yopildi")
    case _:
        print("Noto'g'ri tanlov")
02

Hafta kunini tanlash

1.48-rasm: 1 dan 7 gacha raqamlar bo‘yicha tanlov

Hafta kunlari dasturi kodi

kun = int(input("Hafta kunini kiriting (1-7): "))

match kun:
    case 1: print("Dushanba")
    case 2: print("Seshanba")
    case 3: print("Chorshanba")
    case 4: print("Payshanba")
    case 5: print("Juma")
    case 6: print("Shanba")
    case 7: print("Yakshanba")
    case _:
        print("Xato! 1–7 oralig'ida kiriting")
03

Rasmiy amaliy topshiriqlar

3 ga karrali sonlar va 12 ta oy nomlari

Topshiriq 2: 3 ga karrali sonlar süzgichi

Sonlar: 1..N for yoki while i % 3 == 0 ? 3 ga bo‘linadimi? 3, 6, 9, 12... Faqat 3 ga karrali sonlar

3 ga karralilar: for va while

for sikli bilan

n = 20
for i in range(1, n + 1):
    if i % 3 == 0:
        print(i, end=" ")
# 3 6 9 12 15 18

while sikli bilan

n = 20
i = 1
while i <= n:
    if i % 3 == 0:
        print(i, end=" ")
    i += 1
# 3 6 9 12 15 18

Topshiriq 3: 12 oy va fasllar guruhi

Qish 12, 1, 2 Dek, Yan, Fev Bahor 3, 4, 5 Mar, Apr, May Yoz 6, 7, 8 Iyun, Iyul, Avg Kuz 9, 10, 11 Sen, Okt, Noy

Oy nomlari dasturi (match/case)

oy = int(input("Oy raqamini kiriting (1-12): "))

match oy:
    case 1: print("Yanvar")
    case 2: print("Fevral")
    case 3: print("Mart")
    case 4: print("Aprel")
    case 5: print("May")
    case 6: print("Iyun")
    # ... qolgan oylar
    case _:
        print("Xato! 1–12 oralig'ida kiriting")

Amaliy topshiriq: 3-hafta loyihalari

Vaqt: 20 daqiqa · Darajalar bo‘yicha

1. Oson

1 dan 7 gacha kiritilgan songa qarab hafta kunini match/case da chiqaring.

2. O'rta

[1, 30] oralig‘idagi 3 ga karrali sonlarni for va while da chiqaring.

3. Qiyin

1 dan 12 gacha songa qarab fasl nomini case 12 | 1 | 2: usulida aniqlang.

Tezkor sinov

Quyidagi match/case blokida x = 7 bo‘lsa nima chiqadi?

x = 7
match x:
    case 1 | 3 | 5: print("Toq 1")
    case 2 | 4 | 6: print("Juft")
    case _: print("Boshqa son")
Javob: Boshqa son (chunki 7 variantlarda yo'q va case _ ga tushadi)

1–3 haftalar davomida o‘rganilganlar

Asoslar

Python o‘rnatish, toifalar (int, float, str, bool), o‘zgaruvchilar

Shartlar

Taqqoslash, mantiqiy operatorlar, if/else va elif

Sikllar & Match

for, range(), while, break, continue va match/case

AXV

1–3 haftalar yakunlandi!

Keyingi hafta: Ma’lumotlar tuzilmalari: string va list

9-sinfAdvanced Back-end va DevOps