#11 BIR NECHTA SHARTLARNI TEKSHIRISH
if-elif-else zanjiri, "and", "or" operatorlari bilan tanishamiz
if-elif-else KETMA-KETLIGI
if-elif-else KETMA-KETLIGIDastur davomida bir nechta shartni tekshirish talab qilinishi mumkin. Bunday holatda biz if-elif-else ketma-ketligidan foydalanamiz. elif - else va if so'zalrining jamlanmasi bo'lib, "aks holda, agar" deb tarjima qilinadi. Bunday if bilan boshlangan ketma-ketlik bir nechta elif lardan iborat bo'lishi mumkin.
Python avval if shartini tekshiradi, shart bajarilmasa elif ga o'tadi, birinchi elif sharti bajarilmasa keyingi elif ga o'tadi va hokazo davom etaveradi.
Diqqat!if-elif-else ketma-ketlikda biror shart bajarilishi bilan, Python qolgan shartlarni tekshirmaydi.
Keling bir misol ko'ramiz. Hayvonot bo'giga kirish quyidagicha belgilangan:
4 yoshdan kichik bolalarga kirish bepul
4 yoshdan 12 yoshgacha kirish 5000 so'm
12 yoshdan kattalarga 10000 so'm
Foydalanuvchidan yoshini so'rab, hayvonot bog'iga kirish chiptasi narhini chiqaruvchi dastur yozamiz.
Yuqoridagi kod avval foydalanuvchi yoshini so'raydi. 2-qatorda yosh 4 dan kichik ekanligini tekshiradi. Agar bu shart bajarilsa shartlarni tekshirish shu yerdayoq to'xtaydi va keyingi shartlar tashlab o'tib ketiladi.

Agar yosh<=4 sharti bajarilmasa, keyingi elif yosh<=12 sharti tekshiriladi, agar shart bajarilsa quyidagi natija chiqadi:

Agar yuoqridagi ikki shart ham bajarilmasa navbat o'z-o'zidan else bilan kelgan kod bajariladi:

Avval aytganimizdek, if-elif-else zanjirida bit nechta elif lar bo'lishi mumkin. Misol uchun, hayvonot bog'i qariyalar uchun chegirma e'lon qilsa, kodimizni quyidagicha o'zgartirishimiz mumkin:

if-elif-else zanjirida ham else qismi majburiy emas:
AND, OR OPERATORLARI
AND, OR OPERATORLARIYuqorida aytganimizdek, if-elif-else zanjirida shartlarning biri bajarilishi bilan, Python qolgan shartlarni tekshirmaydi va ularni bajarmaydi. Lekin ba'zida biz 2 yoki undan ko'p shartlarni tekshirishni talab qilishimiz mumkin, buing uchun AND va OR operatorlaridan foydalanamiz.
OR OPERATORI
OR OPERATORIOR ingliz tilidan "yoki" deb tarjima qilinadi, va ikki va undan ko'p shartlardan biri bajarilishini tekshirishda ishlatiladi. Quyidagi misolni ko'raylik, foydalanuvchidan hafta kunini so'raymiz va agar kun shanba yoki yakshanba bo'lsa, bugun dam olish kuni degan xabarni chiqaramiz, aks holda bugun ish kuni degan xabarni chiqaramiz:
2-qatrodagi or operatoriga e'tibor qiling, bu operator kun.lower()=='shanba' yoki kun.lower()=='yakshanba' shartlaridan biri bajarilsa TRUE qiymatini qaytaradi

AND OPERATORI
AND OPERATORIAND ingliz tilidan "va" deb tarjima qilinadi, va ikki va undan ko'p shartlarning barchasi bajarilishini tekshirishda ishlatiladi. AND operatori bilan yozilgan shartlarning barchasi bajarilgandagina TRUE qiymati qaytadi, agar shartlardan biri bajarilmay qolsa ham FALSE qiymati qaytadi.
Quyidagi misolni ko'ramiz:
3-qatordagi and operatori kun.lower()=='yakshanba' va harorat>=30 shartlarining ikkisi ham bajarilgandagina TRUE qiymatini qaytaradi, aks holda qiymat FALSE bo'ladi.

BIR NECHTA SHARTLARNI KETMA-KET YOZISH
Shartlarni yozishda bir nechta and or operatorlarini aralashtirib ham yozish mumkin.
3-qatorga e'tibor bersangiz biz avval kun shanba yoki yakshanba ekanligini so'ngra haroratni tekshirdik. Bu shart bajarilishi uchun kun shanba yoki yakshanba va harorat 30 dan baland bo'lishi shart.
BOOLEAN MA'LUMOTLAR TURI
Avvalgi darsimizda biz turli ifodalarni solishtirishda TRUE yoki FALSE qiymatlari qaytishini ko'rdik. Bu qiymatlar boolean (mantiqiy) qiymatlar deb ataladi, va dasturlashda juda keng qo'llaniladi. Pythonda o'zgaruvchilarda boolean qiymatlarni ham saqlash mumkin.
Quyidagi dasturga e'tibor bering. Deylik, restoranimizga kelgan mijoz 15000 so'mlik taom oldi, biz mijoz qo'shimcha choy va salat ham olgan (olmaganiga) qarab ularning narhini ham yakuniy narhga qo'shishimiz kerak. Mijozning choy yoki salat olgan (olmaganini) biz TRUE va FALSE qiymatlari bilan belgiladik.
Natija: Jami 20000 so'm
E'tibor bering, choy va salat boolean (mantiqiy) qiymatlar bo'gani uchun, 5 va 7-qatorlarda biz choy==True yoki salat==True deb yozib o'tirishimiz shart emas.
Yuoqirdagi misolda choy = True (choy oldi) va salat = False (salat olmadi) bo'lgani uchun yakuniy narh narh+5000=20000 chiqdi.
SHARTLARNI KETMA-KET TEKSHIRISH
if-elif-else zanjirining kamchiligidan biri, shartlardan biri bajarilishi bilan, qolgan shartlar tekshirilmaydi. Shung uchun ba'zida shartlarni ketma ket tekshirish uchun, har bir shartni alohida if bilan ajratish talab qilinishi mumkin.
Yuqoridagi misolni kengaytiraylik:

Yuqoridagi dasturda har bir if alohida tekshiriladi va avvalgi yoki keyingi if ga bog'liq emas.
RO'YXAT TARKIBINI TEKSHIRISH
in OPERATORI
in OPERATORIin operatori yordamida biz ro'yxatning tarkibida ma'lum bir element borligini tekshirishimiz mumkin.
Natija: False
Natija: True

not in OPERATORI
not in OPERATORI not in operatori yordamida esa biror element ro'yxatda yo'qligini tekshirishimiz mumkin.
Natija: True
Natija: False
IKKI RO'YXATNI SOLISHTIRISH
Ikki ro'yxatning tarkibi quyidagicha tekshiriladi:

RO'YXAT BO'SH EMASLIGINI TEKSHIRISH
Yuqoridagi dasturimizda biz foydalanuvchi buyurtma berdi deb tasavvur qilyapmiz. Lekin foydalanuvchidan bo'sh ro'yxat kelsachi? Demak for tsiklini bajarishdan avval ro'yxat bo'sh emasligiga amin bo'lishimiz kerak. Buning uchun avvalgi kodimizni quyidagicha o'zgartiramiz:
Demak if royxat_nomi: ifodasi agar ro'yxatda bir dona element bo'lsa ham TRUE qiymat qaytaradi, aks holda FALSE qiymatini qaytaradi.
AMALIYOT
Quyidagi dasturlarni alohida fayllarga yozing va bajaring:
Foydalanuvchidan juft son kiritishni so'rang. Agar foydalanuvchi juft son kiritsa "Rahmat!", agar toq son kiritsa "Bu son juft emas" degan xabarni chiqaring.

Foydalanuvchi yoshini so'rang, va muzeyga kirish uchun chipta narhini quyidagicha chiqaring:
Agar foydalanuvchi 4 yoshdan kichkina yoki 60 dan katta bo'lsa bepul
Agar foydalanuvchi 18 dan kichik bo'lsa 10000 so'm
Agar foydalanuvchi 18 dan katta bo'lsa 20000 so'm
Foydalanuvchidan ikita son kiritishni so'rang, sonlarni solishtiring va ularning teng yoki katta/kichikligi haqida xabarni chiqaring

mahsulotlardegan ro'yxat yarating va kamida 10 ta turli mahsulotni kiriting. Yangi,savatdegan bo'sh ro'yxat yarating va foydalanuvchidan savatga kamida 5 ta mahsulot kiritishni so'rang. Savatdagi elementlarni,mahsulotlarro'yxati bilan solishtiring va qaysi biri ro'yxatda bo'lsa "Mahsulot do'konimizda bor" aks holda, "Mahsulot do'konimizda yo'q" degan xabarlarni chiqaring.

Yuqoridagi dasturni quyidagicha o'zgartiring: foydalanuvchidan 5 ta mahsulot kiritishni so'rang. Foydalanuvchi so'ragan va do'konda bor mahsulotlarni yang,
bor_mahsulotlardegan ro'yxatga, do'konda yo'q mahsulotlarni esamavjud_emasdegan ro'yxatga qo'shing. Agar mavjud_emas ro'yxati bo'sh bo'lsa, "Siz so'ragan barcha mahsulotlar do'konimizda bor" degan xabarni, aks holda esa "Quyidagi mahsulotlar do'konimizda yo'q: ....." degan xabarni chiqaring.

foydalanuvchilardegan ro'yxat tuzing, va kamida 5 ta login qo'shing. Foydalanuvchidan yangi login tanlashni so'rang va foydalanuvchi kiritgan loginni foydalanuvchilar degan ro'yxatning tarkibi bilan solishtiring. Agar ro'yxatda bunday login mavjud bo'lsa, "Login band, yangi login tanlang!" aks holda "Xush kelibsiz, foydalanuvchi!" xabarini chiqaring.

Foydalanuvchidan biror butun son kiritishni so'rang. Foydalanuvchi kiritgan sonni 2 da 10 gacha bo'lgan sonlardan qay biriga qoldiqsiz bo'linishini konsolga chiqaring.

JAVOBLAR
Last updated
Was this helpful?