Shartlar: if, elif, else
Endi dasturimiz savol bera oladi. Navbat — javobga qarab turlicha harakat qilishga. Bu darsda dasturga qaror qabul qilishni o'rgatamiz — bu algoritmning ikkinchi «g'ishti», ya'ni tanlash.
Bu darsda
if— agar shart bajarilsaelse— aks holdaelif— bir nechta variantdan birini tanlash- Chekinish (bo'sh joylar) qoidasi va kod bloklari
- Ichma-ich shartlar va ko'p uchraydigan xatolar
if — «agar»
if (inglizcha «agar») kalit so'zidan keyin shart yoziladi. Shart True bo'lsa, uning ostidagi kod bajariladi, False bo'lsa — tashlab o'tiladi:
harorat = 35
if harorat > 30:
print("Bugun juda issiq!")
print("Ko'proq suv iching.")
print("Ob-havo ma'lumoti tugadi.")
Bugun juda issiq! Ko'proq suv iching. Ob-havo ma'lumoti tugadi.
harorat ni 20 ga o'zgartirib, yana ishga tushiring. Endi faqat oxirgi qator chiqadi, chunki shart bajarilmadi.
Bu kodda ikkita muhim narsa bor:
- Shartdan keyin ikki nuqta
:qo'yiladi. - Shart bajarilganda ishlaydigan qatorlar 4 ta bo'sh joy ichkariga surilgan.
Chekinish — Python'ning eng muhim qoidasi
Qator boshidagi bo'sh joylar chekinish (inglizcha indentation) deyiladi. Ko'p tillarda u faqat chiroy uchun, Python'da esa majburiy: aynan chekinish qaysi qatorlar if ga tegishli ekanini ko'rsatadi.
Bir xil chekinishdagi ketma-ket qatorlar blok hosil qiladi. Yuqoridagi misolda ikkita print() — if bloki. Oxirgi print() esa chekinishsiz, demak u if ga tegishli emas va har doim bajariladi.
Kitobdagi mundarijani eslang: bo'lim nomi chapda, uning ichidagi mavzular esa biroz o'ngga surilgan. Surilgan qatorlar yuqoridagi bo'limga tegishli ekani darhol ko'rinadi. Python kodi ham xuddi shunday «o'qiladi».
Har doim 4 ta bo'sh joy ishlating. Bu saytdagi muharrir, IDLE va VS Code'da Tab tugmasi aynan 4 ta bo'sh joy qo'yadi, Enter esa ikki nuqtadan keyin chekinishni o'zi qo'shadi.
else — «aks holda»
Shart bajarilmaganda boshqa ish qilish kerak bo'lsa, else ishlatiladi. U if bilan bir xil chekinishda yoziladi va undan keyin ham ikki nuqta qo'yiladi:
son = int(input("Son kiriting: "))
if son % 2 == 0:
print(son, "— juft son")
else:
print(son, "— toq son")
Son kiriting: 7 7 — toq son
Bu yerda ikki yo'ldan faqat bittasi bajariladi: yo if bloki, yo else bloki. Ikkalasi birga hech qachon ishlamaydi.
elif — bir nechta variant
Ba'zan ikki emas, ko'proq variant bo'ladi. Buning uchun elif (else if — «aks holda, agar») ishlatiladi. Masalan, 100 ballik tizimda baho qo'yish:
| Ball | Baho |
|---|---|
| 86 – 100 | 5 (a'lo) |
| 71 – 85 | 4 (yaxshi) |
| 56 – 70 | 3 (qoniqarli) |
| 0 – 55 | 2 (qoniqarsiz) |
ball = int(input("Ballingiz: "))
if ball >= 86:
print("Baho: 5 (a'lo)")
elif ball >= 71:
print("Baho: 4 (yaxshi)")
elif ball >= 56:
print("Baho: 3 (qoniqarli)")
else:
print("Baho: 2 (qoniqarsiz)")
Ballingiz: 78 Baho: 4 (yaxshi)
Python shartlarni yuqoridan pastga tekshiradi va birinchi rost shartning blokini bajaradi. Qolganlari tekshirilmaydi ham. 78 ball uchun: 78 >= 86? Yo'q. 78 >= 71? Ha — «4 (yaxshi)» chiqadi va shu bilan tamom.
Shuning uchun ikkinchi shartda ball >= 71 and ball <= 85 deb yozish shart emas: agar ball 85 dan katta bo'lganida, birinchi shart allaqachon ishlagan bo'lardi.
Tartib muhim! Shartlarni teskari yozsak, nima bo'lishini o'ylab ko'ring:
ball = 95
if ball >= 56:
print("Baho: 3")
elif ball >= 86:
print("Baho: 5")
95 ball uchun «3» chiqdi, chunki birinchi shart (95 >= 56) allaqachon rost. Katta qiymatlarni tekshiradigan shartlar oldin turishi kerak.
Shartlarni birlashtirish
O'tgan darsdagi and, or, not bu yerda ham ishlaydi. Masalan, kinoteatr chiptasi narxi:
yosh = int(input("Yoshingiz: "))
if yosh < 7:
narx = 0
elif yosh < 18 or yosh >= 60:
narx = 25000
else:
narx = 50000
if narx == 0:
print("Siz uchun kirish bepul!")
else:
print(f"Chipta narxi: {narx} so'm")
Ichma-ich shartlar
Bir shartning ichida boshqa shart bo'lishi mumkin. Bunda ichki blok yana 4 ta bo'sh joy suriladi:
login = input("Login: ")
parol = input("Parol: ")
if login == "admin":
if parol == "12345":
print("Xush kelibsiz!")
else:
print("Parol noto'g'ri.")
else:
print("Bunday foydalanuvchi yo'q.")
Ichma-ich shartlar ko'payib ketsa, kodni o'qish qiyinlashadi. Ko'pincha ularni and bilan birlashtirish mumkin.
Bo'sh va bo'sh emas qiymatlar
Shart sifatida faqat True/False emas, istalgan qiymat ishlatilishi mumkin. Bo'sh satr "" va 0 soni yolg'on hisoblanadi, qolgan barcha satr va sonlar esa rost:
ism = input("Ismingiz (bo'sh qoldirsa ham bo'ladi): ")
if ism:
print(f"Salom, {ism}!")
else:
print("Salom, mehmon!")
Ko'p uchraydigan xatolar
1. Ikki nuqtani unutish:
yosh = 20
if yosh >= 18
print("Kattalar uchun")
2. Chekinishni unutish:
yosh = 20
if yosh >= 18:
print("Kattalar uchun")
3. == o'rniga = yozish:
yosh = 20
if yosh = 18:
print("Yangi voyaga yetgan")
Har birini ishga tushiring, xato xabarini o'qing va tuzating. Python = xatosini topganda hatto Maybe you meant '==' ...? («balki == demoqchimidingiz?») deb maslahat beradi.
Mashqlar
1-mashq Musbat, manfiy yoki nol
son o'zgaruvchisi musbat, manfiy yoki nol ekanini aniqlab, mos ravishda musbat, manfiy yoki nol deb chiqaring. son = -4 uchun manfiy chiqishi kerak.
son = -4
Yechimni ko'rish
son = -4
if son > 0:
print("musbat")
elif son < 0:
print("manfiy")
else:
print("nol")
2-mashq Uchta sondan kattasi
max() funksiyasidan foydalanmasdan, uchta sondan eng kattasini toping va chiqaring.
a = 17 b = 42 c = 29
Ishora
Avval eng_katta = a deb oling. Keyin b undan katta bo'lsa, eng_katta ni yangilang. Xuddi shunday c ni ham tekshiring.
Yechimni ko'rish
a = 17
b = 42
c = 29
eng_katta = a
if b > eng_katta:
eng_katta = b
if c > eng_katta:
eng_katta = c
print(eng_katta)
E'tibor bering: bu yerda ikkita alohida if ishlatildi, elif emas, chunki ikkala tekshiruv ham bajarilishi kerak.
3-mashq Taksi narxi
Taksi xizmati shunday hisoblaydi: dastlabki 3 km uchun 10 000 so'm, har bir qo'shimcha km uchun 2 500 so'm. Masofa km o'zgaruvchisida. Narxni hisoblang. km = 8 uchun Narx: 22500 so'm chiqishi kerak.
km = 8
Yechimni ko'rish
km = 8
if km <= 3:
narx = 10000
else:
narx = 10000 + (km - 3) * 2500
print(f"Narx: {narx} so'm")
4-mashq Uchburchak
Uchta kesma berilgan. Ulardan uchburchak yasash mumkinmi? Qoida: istalgan ikki tomon yig'indisi uchinchisidan katta bo'lishi kerak. Mumkin yoki Mumkin emas deb chiqaring.
a = 3 b = 4 c = 8
Yechimni ko'rish
a = 3
b = 4
c = 8
if a + b > c and a + c > b and b + c > a:
print("Mumkin")
else:
print("Mumkin emas")
O'zingizni sinang
if qatori oxirida qaysi belgi bo'lishi shart?
- Nuqta-vergul
; - Ikki nuqta
: - Vergul
, - Hech qanday belgi
To'g'ri. Ikki nuqta «bu yerdan blok boshlanadi» degan ma'noni beradi.
Quyidagi kod nima chiqaradi?
x = 10
if x > 5:
print("A")
elif x > 8:
print("B")
else:
print("C")
AvaBBAC
To'g'ri. Birinchi rost shart (x > 5) bajarildi, qolganlari tekshirilmaydi ham.
Python'da qaysi qatorlar if blokiga tegishli ekanini nima belgilaydi?
- Qator boshidagi chekinish (bo'sh joylar)
- Figurali qavslar
{ } endso'zi- Bo'sh qator
To'g'ri. Python bloklarni chekinish orqali aniqlaydi.
Quyidagi kod nima chiqaradi?
x = 3
if x > 5:
print("katta")
print("tugadi")
kattakattavatugadi- Hech narsa
tugadi
To'g'ri. Shart bajarilmadi, lekin oxirgi qator if ga tegishli emas — u har doim bajariladi.
Xulosa
if shart:— shart rost bo'lsa, blok bajariladi.else:— shart yolg'on bo'lganda bajariladigan blok.elif shart:— qo'shimcha variantlar. Birinchi rost shartning bloki bajariladi, qolganlari tekshirilmaydi.- Blok — bir xil chekinishdagi qatorlar. Har doim 4 ta bo'sh joy ishlating.
- Shartdan keyin ikki nuqta
:qo'yishni va taqqoslashda==yozishni unutmang.