Python dasturlash tili: 5-dars.
Buyruqlar bajarilish ketma-ketligi.
Bizning shu vaqtgacha ko’rgan misollarimizda buyruqlar doimo Python tomonidan qat’iy yuqoridan pastga qarab, ketma-ket bajarilgan. Agar bizda buyruqlar bajarilish ketma-ketligini o’zgartirish ehtiyoji bo’lsa, u holda nima qilamiz? Misol uchun, dastur vaziyatga qarab ma’lum bir yechim qabul qilishi kerak. Aytaylik, kunning vaqtiga qarab «xayrli tong« yoki «xayrli kech» so’zlarini ekranga chop etadi.
Bunday hollarda buyruqlar ketma-ketligini boshqaruvchi operatorlar qo’l keladi. Pythonda buyruqlar ketma-ketligini boshqaruvchi uchta operator mavjud. Bular if, for va while.
if operatori
if operatori shartni tekshirish uchun ishlatiladi: agar shart to’g’ri bo’lsa, birinchi ifodalar bloki bajariladi (bu blok «if — blok» deb nomlanadi), aks xolda keyingi ifodalar bloki bajariladi (bu blok «else — blok» deb nomlanadi). «else» blokining bo’lishi majburiy emas.
Misol: (if.py nomi bilan saqlang)
number = 23
guess = int(input(«Butun son kiriting : «))
if guess == number:
print(«Tabriklayman, siz topdingiz,»)
# Bu yerda yangi blok boshlanadi
print(«(ammo xech qanday sovg’a yutmadingiz!)»)
# Bu yerda yangi blok tugaydi
elif guess
print(«Yo’q, o’ylangan son kiritilgan sondan kattaroq.»)
# Yana bir blok
# Blok ichida nima xoxlasangiz bajarishingiz mumkin …
else:
print(«Yo’q, o’ylangan son kiritilgan sondan kichikroq.»)
# Bu blokka tushish uchun kiritilgan guess soni oldindan o’ylangan
#number sonidan katta bo’lishi kerak
print(«Tamom.»)
# Bu oxirgi ifoda doimo yuqoridagi ifodalardan so’ng bajariladi.
Natija:
$ python if.py
Butun son kiriting : 50
Yo’q, o’ylangan son kiritilgan sondan kichikroq.
Tamom.
$ python if.py
Butun son kiriting : 22
Yo’q, o’ylangan son kiritilgan sondan kattaroq.
Tamom.
$ python if.py
Butun son kiriting : 23
Tabriklayman, siz topdingiz,
(ammo xech qanday sovg’a yutmadingiz!)
Tamom.
Bu qanday ishlaydi:
Biz bu dasturda foydalanuvchidan biror son kiritishini so’raymiz va bu kiritilgan son oldindan o’ylab qo’yilgan songa teng yoki teng emasligini tekshiramiz. Biz number o’zgaruvchiga biror son qiymatini biriktiramiz. Misol uchun 23. Shundan so’ng biz foydalanuvchidan biror butun son kiritishini input() funksiyasi yordamida so’raymiz. Funksiya — bu ko’p marta ishlatish mumkin bo’lgan dastur kodi bo’lagi hisoblanadi. Biz ular haqida keyingi darslarimizda imkon qadar tanishib o’tishga harakat qilamiz.
Biz input funksiyasiga ekranga chiqarish uchun qator beramiz va o’z navbatida u bu qatorni ekranga chiqaradi va foydalanuvchidan biror qiymat kiritishini kutadi. Biz biror qiymat kiritib Enter tugmasini bosishimiz bilan input() funksiyasi biz kiritgan qiymatni satr ko’rinishida qaytaradi. Biz bu satrni int() funksiyasi yordamida butun songa aylantiramiz va uni guess o’zgaruvchisiga biriktiramiz. Umuman olganda int — bu klass, lekin bizning holatda uning yordamida satrni butun songa aylantirish mumkinligini bilsak yetarli bo’ladi (satr butun sondan tashkil topganligi nazarda tutilagan).
So’ng biz foydalanuvchi tomonidan kiritilgan sonni oldindan o’ylangan son bilan taqqoslaymiz. Agar ular teng bo’lsa bu muvaffaqiyat haqidagi xabarni ekranga chop etamiz. E’tibor bering, biz Pythonga qaysi ifodalar qaysi blokka tegishlik ekanligini bildirish uchun kerakli miqdorda «otstup» ishlatdik. Mana shuning uchun «otstup»lar Python tilida juda ham muhim.
E’tibor bering, if operatori oxirida ikki nuqta (:) turibdi. Bu bilan biz ifodalar bloki boshlanishini ko’rsatayapmiz.
Shundan so’ng foydalanuvchi kiritgan son oldindan o’ylangan sondan kichikligini tekshiramiz. Agar shunday bo’lib chiqsa, bu haqida foydalanuvchini oldindan o’ylangan son kiritilgan sondan kattaroq ekanligidan xabardor qilamiz. Bu yerda biz elif ifodasidan foydalandik. Bu ifoda o’zida ikkita bir-biriga bog’liq bo’lgan if else-if else ifodani bir ifodada if elif else saqlaydi. Bu dasturni o’qishni osonlashtiradi va qo’shimcha «otstup»larni talab qilmaydi.
elif va else ifodalari ham mantiqiy qator oxirida ikki nuqta (:) ga ega va bu o’z navbatida ulardan so’ng mos keluvchi ifodalar bloki kelishligini bildiradi (tegishli «otstup»lar miqdori bilan albatta).
if operatori if — bloki ichida boshqa if operatori ishlatilishi mumkin va bu ichma-ich if operatori deyiladi.
Esda saqlang, elif va else ishlatilishi majburiy emas. Qisqa if operatorining yozilishi quyidagicha:
if True:
print(‘Ha, bu rost.’)
Python if operatorini uning qismlari elif va else bilan bajarib bo’lgandan so’ng, if operatori joylashgan blokdagi keyingi ifodani bajarishga o’tadi. Bizning holatda bu dasturning asosiy bloki, keyingi ifoda esa print(«Tamom») ifodasi hisoblanadi. So’ng Python dasturi oxirigacha bajariladi va tugallanadi.
while operatori
while operatori ma’lum shartlar qanoatlantirganda buyruqlar blokining ko’p marta bajarilish imkonini beradi. Bu sikl operatorlari deb nomlanuvchi operatorlardan biri hisoblanadi. U ham majburiy bo’lmagan else qismiga ega.
Misol: (while.py nomi bilan saqlang)
number = 23
running = Tru
while running:
guess = int(input(«Butun son kiriting : «))
if guess == number:
print(«Tabriklayman, siz topdingiz.»)
running = False # bu ifoda while siklini to’xtatish uchun hizmat qiladi.
elif guess print(«Yo’q, o’ylangan son kiritilgan sondan kattaroq.»)
else:
print(«Yo’q, o’ylangan son kiritilgan sondan kichikroq.»)
else:
print(«while sikli tugadi.»)
# Bu yerda siz ya’na nima zarur bo’lsa, bajarishingiz mumkin.
print(«Tamom.»)
Natija:
$ python while.py
Butun son kiriting : 50
Yo’q, o’ylangan son kiritilgan sondan kichikroq.
Butun son kiriting : 22
Yo’q, o’ylangan son kiritilgan sondan kattaroq.
Butun son kiriting : 23
Tabriklayman, siz topdingiz.
while sikli tugadi.
Tamom.
Bu qanday ishlaydi:
Bu dasturda biz son topish o’ynini o’ynashni davom ettiramiz. Lekin buning afzalligi shundaki, foydalanuvchi sonni topguncha qayta-qayta harakat qilishi mumkin bo’ladi va undan dasturni qayta-qayta ishga tushirish talab qilinmaydi. Bu while operatorining qo’llanilishini ochiq ko’rsatib beradi. Biz input funksiyasi va if operatorini while sikli ichiga joylashtirdik va siklni boshlashdan oldin running o’zgaruvchisi qiymatini True ga tenglab oldik. Shundan so’ng tegishli while-blok qismiga o’tish sodir bo’ladi. Bu blok bajarilgandan so’ng running o’zgaruuvchisi yana tekshiriladi. Agar u rost bo’lsa, while-blok yana ishga tushiriladi, aks holda qo’shimcha else-blokiga o’tiladi. So’ng keyingi ifodaga o’tiladi.
else bloki while siklini sharti yolg’on bo’lganda bajariladi. Bu shartni birinchi marta tekshirilishida ham sodir bo’lishi mumkin. Agar while sikli else qo’shimcha blokiga ega bo’lsa u doimo bajariladi. Faqatgina while bloki ichida sikl break operatori bilan tugatilganda, boshqaruv sikldan keyingi operatorlarga o’tkaziladi.
for operatori
for .. in operatori ob’yektlar ketma-ketligida iteratsiyani amalga oshiruvchi, ya’ni ketma-ketlikning xar bir elementi orqali o’tuvchi sikl operatori hisoblanadi. Ketma-ketliklar haqida keyingi darslarimizda imkon qadar tanishishga harakat qilamiz. Lekin xozircha ketma-ketliklar — bu tartiblangan elementlar to’plami ekanligini esalb qoling.
Misol: (for.py nomi bilan saqlang)
for i in range(1, 5):
print(i)
else:
print(«Sikl tugadi»)
python for.py
Sikl tugadi
Bu qanday ishlaydi:
Bu dasturda biz sonlar ketma-ketligini ekranga chop etamiz. Bu ketma-ketlikni biz range funksiyasi yordamida generatsiya qilamiz.
Biz ikkita son beramiz va range funksiyasi bizga birinchi sondan ikkinchi songacha bo’lgan sonlar ketma-ketligini qaytaradi. Misol uchun, range(1,5) bizga [1, 2, 3, 4] ketma-ketligini beradi. O’z holicha range funksiyasi qadami qiymati 1 ga teng. Agar biz range funksiyasiga uchinchi sonni bersak, bu uning uchun qadam qiymati bo’lib xizmat qiladi. Misol uchun, range(1,6,2) bizga [1, 3, 5] ni beradi. Esda saqlang, range funksiyasi ikkinchi songacha boradi, ammo uni olmaydi.
So’ng for sikli ushbu — for i in range(1,5) ekvivalenti bo’lgan for i in [1, 2, 3, 4] diapazoni bo’ylab iteratsiyani amalga oshiradi. Bunda i o’zgaruvchiga har bir iteratsiyada bittadan son (yoki ob’yekt) biriktiradi va har bir i ning qiymati uchun buyruqlar bloki bajariladi. Bu holatda biz buyruqlar blokida i qiymatini ekranga chop etyapmiz.
Eslab qoling else majburiy emas. Agar u mavjud bo’lsa, for sikli tugaganidan so’ng bir marta bajariladi. Lekin bunda ham while kabi sikl brek operatori bilan tugatilmagan bo’lishi kerak.
Ya’na eslab qolingki, for..in sikli barcha ketma-ketliklar bilan ishlaydi. Bizning holatda bu range funksiyasi bilan generatsiya qilingan sonlar ketma-ketligi edi. Umuman olganda, ixtiyoriy ob’yektni ixtiyoriy ketma-ketligi bilan ishlatish mumkin.
break operatori
break operatori agar siklning bajarilish sharti hali False qiymat olmagan bo’lsa ham yoki ketma-ketlik elemantlari hali tugamagan bo’lsa ham siklni to’xtatish, ya’ni buyruqlar bajarilishini to’xtatish uchun xizmat qiladi.
Shuni aytib o’tish kerakki, for yoki while sikllarini break operatori bilan to’xtatilsa, ularga tegishli bo’lgan else bloki bajarilmaydi.
Misol: (break.py nomi bilan saqlang)
while True:
s = input(«Nimadir kiriting : «)
if s == «exit»:
break
print(«Satr uzunligi: «, len(s))
print(«Tamom»)
Natija: $ python break.py Nimadir kiriting : Dasturlash qiziq. Satr uzunligi: 17 Nimadir kiriting : Agar ish zerikarli bo’lsa, Satr uzunligi: 27 Nimadir kiriting : Unga berish uchun quvonchli ton Satr uzunligi: 32 Nimadir kiriting : Ishlating Python. Длина строки: 17 Nimadir kiriting : exit Tamom Bu qanday ishlaydi: Bu dasturda biz foydalanuvchi tomonidan ko’p marta kiritilgan qiymatni olamiz va uning uzunligini ekranga chop etamiz. Dasturni to’xtatish uchun biz maxsus tekshirish yordamida foydalanuvchi kiritgan qiymat ‘exit’ satri bilan mos kelishligini tekshiramiz. Agar mos kelsa, siklni break sikl to’xtatish operatori bilan to’xtatamiz va dasturni oxiriga yetamiz. Kiritilgan satr uzunligi len funksiyasi yordamida topiladi. Eslab qoling, break operatori for siklida ham ishlatilishi mumkin.
continue operatori
continue operatori joriy blokdagi o’zidan keyingi qolgan barcha buyruqlarni bajarmay siklning keyingi iteratsiyasidan davom ettirish uchun ishlatiladi. Misol: (continue.py nomi bilan saqlang)
while True:
s = input(«Nimadir kiriting : «)
if s == «exit»:
break
if len(s) print(«Juda ham kam»)
continue
print(«Kiritilgan satr yetarli darajada uzun»)
# Boshqa har-xil buyruqlar…
Natija:
$ python continue.py
Nimadir kiriting : a
Juda ham kam
Nimadir kiriting : 12
Juda ham kam
Nimadir kiriting : abc
Kiritilgan satr yetarli darajada uzun
Nimadir kiriting : exit
Bu qanday ishlaydi:
Bu dasturda biz foydalanuvchidan biror qiymat kiritishini so’raymiz, kiritilgan qator uzunligi 3 dan katta bo’lsa, tegishli amallarni bajaramiz. Satr uzunligini hisoblash uchun len funksiyasini ishlatdik va agar satr uzunligi 3 dan kichik bo’lsa, qolgan amallarni continue operatori yordamida bajarmay, siklning keyingi iteratsiyasiga o’tamiz. Aks holda biz uchun kerakli amallarni bajaruvchi buyruqlar bajariladi.
Eslab qoling, continue operatoti for sikli bilan ham ishlaydi.
Bu darsimizda buyruqlar ketma-ketligini boshqaruvchi uchta if, while va for operatorlari hamda ular bilan bog’liq bo’lgan break va continue operatorlaridan qanday foydalanishni ko’rib chiqdik. Bular Pythonning eng ko’p ishlatiladigan konstruksiyalaridan hisoblanadi. Shuning uchun ulardan foydalana olish ko’nikmasi juda ham muxim.
Ushbu darsni tayyorlashda quyidagi manbalardan foydalanildi.
1) http://wombat.org.ua/AByteOfPython/
2) http://www.swaroopch.com/notes/python/
Manba:
Umumiy Dasturlash
Python dasturlash tili: 5-dars