Bu bo'limda dastur "qaror qabul qilish"ni o'rgandi (shartlar) va bir nechta qiymatni birgalikda saqlash boshlandi: ro'yxatlar (list) va o'zgarmas ro'yxatlar (tuple).
Shartlar: if / elif / else
Shu paytgacha dastur qatorlarni yuqoridan pastga ketma-ket bajarardi. if unga tanlov kiritadi — shart rost bo'lsa bir yo'l, bo'lmasa boshqa yo'l:
ball = 78
if ball >= 90:
print("A'lo")
elif ball >= 70:
print("Yaxshi")
elif ball >= 50:
print("Qoniqarli")
else:
print("Qayta topshirish kerak")
print("Baholash tugadi")
Natija:
Yaxshi
Baholash tugadi
Qoidalar:
- Shartdan keyin ikki nuqta (
:) majburiy. - Shartga tegishli kod 4 bo'sh joy ichkarida yoziladi — Python blokni aynan shu surilish (indentatsiya) orqali biladi. Surilmagan
print("Baholash tugadi")shartga bog'liq emas, har doim ishlaydi. eliflar yuqoridan pastga tekshiriladi va birinchi rost bo'lgani bajariladi: 78 ball>= 70da to'xtadi,>= 50gacha yetib bormadi.else— "qolgan hamma holat"; sharti yozilmaydi.
Taqqoslash operatorlari: == (teng), != (teng emas), >, <, >=, <=. Bir nechta shartni birlashtirish: and (ikkalasi ham), or (kamida bittasi), not (inkor):
yosh = 20
talaba = True
if yosh >= 18 and talaba:
print("Talabalar chegirmasi beriladi")
Natija:
Talabalar chegirmasi beriladi
Tipik xato — taqqoslashda bitta = yozish:
if yosh = 18:
Natija:
SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?
Bitta = — qiymat berish, ikkitasi == — taqqoslash. Python xabarda o'zi eslatyapti.
Ro'yxatlar (list)
Ro'yxat bir nechta qiymatni tartib bilan saqlaydi. Kvadrat qavsda yoziladi, elementlariga indeks orqali murojaat qilinadi (0 dan boshlab):
mevalar = ["olma", "nok", "uzum"]
print(mevalar[0])
print(mevalar[-1]) # manfiy indeks — oxiridan
print(len(mevalar))
Natija:
olma
uzum
3
Ro'yxatni o'zgartirish — qo'shish, o'chirish, almashtirish:
mevalar.append("anor") # oxiriga qo'shadi
mevalar.insert(1, "banan") # 1-indeksga suqib qo'yadi
mevalar.remove("nok") # qiymat bo'yicha o'chiradi
mevalar[0] = "qizil olma" # indeks bo'yicha almashtiradi
print(mevalar)
oxirgi = mevalar.pop() # oxirgisini olib tashlaydi VA qaytaradi
print(oxirgi, "-", mevalar)
Natija:
['qizil olma', 'banan', 'uzum', 'anor']
anor - ['qizil olma', 'banan', 'uzum']
Element borligini in bilan tekshirish va for bilan aylanib chiqish:
if "uzum" in mevalar:
print("Uzum bor")
for meva in mevalar:
print("Savatda:", meva)
Natija:
Uzum bor
Savatda: qizil olma
Savatda: banan
Savatda: uzum
Tipik xato — mavjud bo'lmagan indeksga murojaat: uch elementli ro'yxatda indekslar 0, 1, 2; mevalar[3] esa IndexError: list index out of range beradi. Ro'yxat necha elementli ekaniga ishonch bo'lmasa, len() bilan tekshiring.
Tuple — o'zgarmas ro'yxat
Tuple ro'yxatga o'xshaydi, lekin yaratilgach o'zgartirilmaydi. Oddiy qavsda yoziladi:
koordinata = (41.31, 69.24)
print(koordinata[0])
koordinata[0] = 42
Natija:
41.31
TypeError: 'tuple' object does not support item assignment
O'zgarmaslik — kamchilik emas, kafolat: koordinata, sozlamalar, haftaning kunlari kabi o'zgarmasligi kerak bo'lgan ma'lumotni tuple'da saqlash "tasodifan buzilish"dan himoya qiladi.
| list | tuple | |
|---|---|---|
| Qavslar | [1, 2, 3] |
(1, 2, 3) |
| O'zgartirish | append, remove, [i] = x |
Mumkin emas |
| Qachon ishlatiladi | Ma'lumot o'zgarib turadi | Ma'lumot qat'iy |
| Tezlik/xotira | — | Bir oz tejamkorroq |
Eslab qoling
if/elif/else: shartdan keyin:, ichki kod 4 bo'sh joy ichkarida; birinchi rost shart g'olib.==taqqoslaydi,=qiymat beradi;and/or/notshartlarni birlashtiradi.- Ro'yxat: indeks 0 dan,
append/insert/remove/pop,in— mavjudlik,for— aylanish. pop()o'chiradi va qaytaradi — bu ikkisi birga kerak bo'lganda ishlatiladi.- Tuple o'zgarmas; qat'iy ma'lumotlar uchun.
Amaliyot
- Foydalanuvchi yoshini o'zgaruvchiga yozib,
if/elif/elsebilan "bola (0-12) / o'smir (13-17) / katta (18+)" deb baholang. - Harorat va yog'ingarchilik (
True/False) bo'yicha maslahat bering: issiq va quruq — "piyoda yuring", sovuq yoki yomg'ir — "transport oling" (and/orishlating). - Haftaning 7 kunini ro'yxatga yozing; birinchi, oxirgi va o'rtadagi kunini chiqaring;
forbilan hammasini sanab chiqing. - Xarid ro'yxatini boshqaring: 3 mahsulot bilan boshlang, bittasini
remove, ikkitasiniappend, birinchisini almashtiring — har qadamda ro'yxatni chiqarib boring. sonlar = [12, 7, 25, 3, 18]uchunfor+ifbilan faqat 10 dan kattalarini chiqaring va nechta ekanini sanang.- O'z shahringiz koordinatasini tuple qiling; o'zgartirishga urinib, xatoni o'qing; keyin xuddi shu ma'lumotni qachon list qilish o'rinli bo'lishini bir gap bilan yozing.
Mavzular bo'lim testida mustahkamlanadi.