Pythonda shartli if ifodasi. Sintaksis, else/elif bloklari, misollar

Dasturlashni o'rganish jarayonida ko'pincha real hayotda qo'llash oson bo'lmagan dasturlarni yaratish kerak bo'ladi. Axir, vaqti-vaqti bilan siz ko'rsatmalarga faqat ma'lum sharoitlarda amal qilishingiz kerak. Buni dasturda amalga oshirish uchun barcha tillarda boshqaruv iboralari mavjud. Ularning yordami bilan siz kodning bajarilishi oqimini boshqarishingiz, tsikllarni yaratishingiz yoki ma'lum bir shart to'g'ri bo'lganda muayyan harakatlarni bajarishingiz mumkin.

Bugun biz mavjud vaziyatni ma'lum bir holat uchun tekshiradigan va ushbu ma'lumotlarga asoslanib, keyingi harakatlar to'g'risida qaror qabul qiladigan if bayonoti haqida gaplashamiz.

Nazorat bayonotlarining turlari

Umuman olganda, agar dastur oqimini boshqaradigan yagona bayonot emas. Shuningdek, uning o'zi ham kattaroq operatorlar zanjirining tarkibiy qismi bo'lishi mumkin.

Shuningdek, uning bajarilishi jarayonini boshqaradigan tsikllar va bayonotlar mavjud. Bugun biz faqat shartli operator va u ishtirok etishi mumkin bo'lgan zanjirlar haqida gapiramiz.

Dasturlashda tarmoqlanish kabi narsa bor. Aynan shu narsa ma'lum bir shart rost bo'lgandagina bajariladigan buyruqlar ketma-ketligini bildiradi. Mezonlarning o'zi boshqacha bo'lishi mumkin:

  1. O'zgaruvchining ma'lum bir qiymatga tengligi.
  2. Muayyan harakatni bajarish.
  3. Ilova holati (yiqilgan yoki yo'q).

Spektr ancha katta bo'lishi mumkin. Shartli gaplar bir necha turga bo'linadi:

  1. Bitta filial bilan. Ya'ni, bitta tekshirish amalga oshiriladi, buning natijasida ma'lum harakatlar amalga oshiriladi.
  2. Ikki yoki undan ortiq filiallari bilan. Agar 1-mezon to'g'ri bo'lsa, 2-mezonni tekshiring. Agar u to'g'ri bo'lsa, u holda 3-ni tekshiring. Shunday qilib, kerak bo'lganda ko'proq tekshirishni bajaring.
  3. Bir nechta shartlar bilan. Bu erda hamma narsa oddiy. Tarjimon bir nechta shartlarni yoki ulardan birini tekshiradi.

agar bayonot

If operatorining tuzilishi barcha tillarda bir xil. Biroq, Pythonda uning sintaksisi boshqalardan biroz farq qiladi:

agar shart:

    <vxodyaschee vyrajenie 1>

    <vxodyaschee vyrajenie 2>

<ne vxodyaschee vyrajenie>

Birinchidan, operatorning o'zi e'lon qilinadi, shundan so'ng u ishlay boshlaydigan shart yoziladi. Shart to'g'ri yoki noto'g'ri bo'lishi mumkin.

Undan keyin buyruqlar bilan blok keladi. Agar u darhol bajarilishi kerak bo'lgan mezonga mos keladigan bo'lsa, unda tegishli buyruqlar ketma-ketligi if bloki deb ataladi. Unda istalgan miqdordagi buyruqlardan foydalanishingiz mumkin.

Diqqat! Barcha if bloki buyruqlari ichidagi chekinish bir xil o'lchamda bo'lishi kerak. Blok chegaralari chekinishlar bilan belgilanadi. 

Til hujjatlariga ko'ra, chekinish 4 bo'sh joydan iborat. 

Bu operator qanday ishlaydi? Tarjimon if so'zini ko'rganda, u darhol foydalanuvchi tomonidan belgilangan mezonlarga muvofiq ifodani tekshiradi. Agar shunday bo'lsa, u ko'rsatmalar izlay boshlaydi va ularga amal qiladi. Aks holda, ushbu blokdagi barcha buyruqlar o'tkazib yuboriladi.

Agar shartdan keyingi gap cheklanmagan bo'lsa, u if bloki sifatida ishlanmaydi. Bizning vaziyatimizda bu chiziq . Shuning uchun, tekshirish natijasi qanday bo'lishidan qat'i nazar, ushbu chiziq bajariladi.

Bu operator qanday ishlashiga misol uchun kod parchasi.

raqam = int(input("Raqamni kiriting:"))

agar raqam > 10 bo'lsa:

    chop etish ("Raqam 10 dan katta")

Ushbu dastur foydalanuvchidan raqamni so'raydi va uning 10 dan katta ekanligini tekshiradi. Agar shunday bo'lsa, u tegishli ma'lumotni qaytaradi. Misol uchun, agar foydalanuvchi 5 raqamini kiritsa, u holda dastur shunchaki tugaydi va tamom.

Ammo agar siz 100 raqamini ko'rsatsangiz, tarjimon uning o'ndan ortiq ekanligini tushunadi va bu haqda xabar beradi.

Diqqat! Bizning holatda, agar shart noto'g'ri bo'lsa, dastur to'xtaydi, chunki buyruqdan keyin hech qanday buyruq berilmaydi.

Yuqoridagi kodda faqat bitta buyruq mavjud. Ammo ularning ko'plari bor. Yagona talab - cheklash.

Endi bu buyruqlar ketma-ketligini tahlil qilaylik.

raqam = int(input("Raqamni yozing:"))

agar raqam > 10 bo'lsa:

    chop etish ("birinchi qator")

    chop etish ("ikkinchi qator")

    chop etish ("uchinchi qator")

chop etish ("Kiritilgan raqamdan qat'i nazar, bajariladigan qator")

chop etish ("Ilovani tugatish")

Agar siz 2, 5, 10, 15, 50 qiymatlarini kiritsangiz, natija qanday bo'lishini taxmin qilishga harakat qiling.

Ko'rib turganingizdek, agar foydalanuvchi kiritgan raqam o'ndan ortiq bo'lsa, uchta qator chiqariladi + bittasi "Har safar ishga tushirish ..." va bitta "Yakunlash" matni, agar o'ndan kam bo'lsa, faqat bittasi, boshqa matn. Agar rost bo'lsa, faqat 3,4,5-satrlar bajariladi. Biroq, oxirgi ikki qator foydalanuvchi qaysi raqamni ko'rsatganidan qat'iy nazar yoziladi.

Agar siz so'zlarni to'g'ridan-to'g'ri konsolda ishlatsangiz, natija boshqacha bo'ladi. Agar tekshirish mezonini belgilagandan so'ng Enter tugmasini bosgan bo'lsa, tarjimon darhol ko'p qatorli rejimni yoqadi.

Faraz qilaylik, biz quyidagi buyruqlar ketma-ketligini yozdik.

>>>

>>> n = 100

>>> agar n > 10 bo'lsa:

...

Shundan so'ng >>> o'rniga ellips qo'yilganligini ko'ramiz. Bu ko'p qatorli kiritish rejimi yoqilganligini anglatadi. Oddiy so'zlar bilan aytganda, agar siz Enter tugmasini bossangiz, siz ko'rsatmaning ikkinchi bosqichining kirishiga o'tasiz. 

Va bu blokdan chiqish uchun siz blokga yana bitta konstruktsiyani qo'shishingiz kerak if.

>>>

>>> n = 100

>>> agar n > 10 bo'lsa:

… chop etish (“nv 10”)

...

Agar shart to'g'ri bo'lmasa, dastur tugaydi. Bu muammo, chunki foydalanuvchi bunday dasturni nosozlik tufayli yopilgan deb bilishi mumkin. Shuning uchun foydalanuvchiga fikr bildirish kerak. Buning uchun havola ishlatiladi agar bo'lsa.

ifoda operatori agar bo'lsa

Ushbu operator sizga havolani amalga oshirish imkonini beradi: agar ifoda ma'lum bir qoidaga mos kelsa, ushbu amallarni bajaring, agar bo'lmasa, boshqalar. Ya'ni, dastur oqimini ikkita yo'lga bo'lish imkonini beradi. Sintaksis intuitivdir:

agar shart:

    # agar blok

    bayonot 1

    bayonot 2

    va hokazo

boshqa:

    # boshqa blok

    bayonot 3

    bayonot 4

    va hokazo:

Keling, ushbu operator qanday ishlashini tushuntiramiz. Birinchidan, ipda standart bayonot bajariladi yew, mos kelishini tekshirish holati "To'g'ri yoki noto'g'ri". Keyingi harakatlar tekshirish natijalariga bog'liq. Agar rost bo'lsa, shartdan keyin ko'rsatmalar ketma-ketligidagi ko'rsatma bevosita bajariladi. yew, agar u yolg'on bo'lsa, unda yana boshqa

Shu tarzda siz xatolarni hal qilishingiz mumkin. Masalan, foydalanuvchi radiusni kiritishi kerak. Shubhasiz, bu faqat ortiqcha belgisi bo'lgan raqam bo'lishi mumkin yoki bu null qiymatdir. Agar u 0 dan kam bo'lsa, unda siz ijobiy raqamni kiritishingizni so'rab xabar berishingiz kerak. 

Mana bu vazifani amalga oshiradigan kod. Ammo bu erda bitta xato bor. Qaysi birini taxmin qilishga harakat qiling. 

radius = int(input(“Radiusni kiriting:”))

radius >= 0 bo'lsa:

    chop etish (“Atrof = “, 2 * 3.14 * radius)

    chop etish (“Maydon = “, 3.14 * radius ** 2)

    boshqa:

        chop etish ("Iltimos, ijobiy raqamni kiriting")

Chiziq mos kelmasligi xatosi. If i Else ularsiz yoki ularning soni bir xil bo'lishi kerak (uyalangan yoki yo'qligiga qarab).

Keling, yana bir foydalanish holatini beraylik (bu erda hamma narsa operatorni tekislashda to'g'ri bo'ladi) - parolni tekshiradigan dastur elementi.

parol = kiritish ("Parolni kiriting:")

agar parol == «sshh»:

    chop etish ("Xush kelibsiz")

boshqa:

    chop etish ("Kirish taqiqlangan")

Agar parol sshh bo'lsa, bu ko'rsatma odamni o'tkazib yuboradi. Agar harflar va raqamlarning boshqa kombinatsiyasi bo'lsa, u holda "Kirish taqiqlandi" xabarini ko'rsatadi.

ifoda-ifoda if-elif-else

Faqat bir nechta shartlar to'g'ri bo'lmasa, blokdagi bayonot bajariladi. yana boshqa. Bu ifoda shunday ishlaydi.

agar shart_1:

    # agar blok

    bayonot

    bayonot

    ko'proq bayonot

elif shart_2:

    # birinchi elif bloki

    bayonot

    bayonot

    ko'proq bayonot

elif shart_3:

    # ikkinchi elif bloki

    bayonot

    bayonot

    ko'proq bayonot

...

yana boshqa

    bayonot

    bayonot

    ko'proq bayonot

Siz har qanday qo'shimcha shartlarni belgilashingiz mumkin.

Ichki bayonotlar

Bir nechta shartlarni amalga oshirishning yana bir usuli if blokiga qo'shimcha shart tekshiruvlarini kiritishdir.

Operator if boshqa shartlar bloki ichida

gre_score = int(input("Joriy kredit limitingizni kiriting"))

per_grad = int(input("Kredit reytingingizni kiriting:"))

agar per_grad > 70 bo'lsa:

    # tashqi if bloki

        agar gre_score > 150 bo'lsa:

            # ichki if bloki

    chop etish ("Tabriklaymiz, siz qarz oldingiz")

boshqa:

    chop etish ("Kechirasiz, siz kredit olish huquqiga ega emassiz")

Ushbu dastur kredit reytingini tekshirishni amalga oshiradi. Agar u 70 dan kam bo'lsa, dastur foydalanuvchining kredit olish huquqiga ega emasligi haqida xabar beradi. Agar u kattaroq bo'lsa, joriy kredit limiti 150 dan katta yoki yo'qligini aniqlash uchun ikkinchi tekshiruv o'tkaziladi. Ha bo'lsa, kredit berilganligi haqida xabar ko'rsatiladi.

Agar ikkala qiymat ham noto'g'ri bo'lsa, foydalanuvchining kredit olish imkoniyati yo'qligi haqida xabar paydo bo'ladi. 

Endi o'sha dasturni biroz qayta ishlaymiz.

gre_score = int(input("Joriy chegarani kiriting:"))

per_grad = int(input("Kredit balini kiriting:"))

agar per_grad > 70 bo'lsa:

    agar gre_score > 150 bo'lsa:

        chop etish ("Tabriklaymiz, siz qarz oldingiz")

    boshqa:

        chop etish ("Kredit limitingiz past")

boshqa:

    chop etish (“Kechirasiz, siz kredit olish huquqiga ega emassiz”)

Kodning o'zi juda o'xshash, lekin ichkariga joylashtirilgan if agar undan shart noto'g'ri bo'lib chiqsa, algoritm ham beradi. Ya'ni, kartadagi limit etarli emas, lekin kredit tarixi yaxshi, "Sizda kredit reytingi past" xabari ko'rsatiladi.

shart ichidagi if-else ifodasi yana boshqa

Test ballari asosida talabaning bahosini aniqlaydigan yana bir dastur tuzamiz.

ball = int(input("Balingizni kiriting:"))

agar ball >= 90 bo'lsa:

    chop ("Ajoyib! Sizning bahongiz A")

boshqa:

    agar ball >= 80 bo'lsa:

chop ("Ajoyib! Sizning bahongiz B")

    boshqa:

agar ball >= 70 bo'lsa:

    chop ("Yaxshi! Sizning bahongiz C")

boshqa:

    agar ball >= 60 bo'lsa:

chop etish ("Sizning bahongiz D. Materialni takrorlashga arziydi.")

    boshqa:

chop etish ("Siz imtihondan o'ta olmadingiz")

Ilova avval ball 90 dan katta yoki teng ekanligini tekshiradi. Ha bo'lsa, u A bahosini qaytaradi. Agar bu shart noto'g'ri bo'lsa, keyingi tekshiruvlar o'tkaziladi. Biz algoritm birinchi qarashda deyarli bir xil ekanligini ko'ramiz. Shunday qilib, ichkarini tekshirish o'rniga yana boshqa kombinatsiyasidan foydalanish yaxshiroqdir if-elif-else.

Shunday qilib, operator if juda muhim funktsiyani bajaradi - bu kodning ma'lum qismlarini faqat kerak bo'lganda bajarilishini ta'minlaydi. Busiz dasturlashni tasavvur qilib bo'lmaydi, chunki hatto eng oddiy algoritmlar ham "chapga borsangiz topasiz, agar o'ngga o'tsangiz, buni va buni qilish kerak" kabi vilkalar kerak.

Leave a Reply