Şərt operatoru

Buraya qədər yazdığımız proqramlarda biz xətti alqoritmlərdən istifadə etdik. Yəni proqramlarımızdakı əməliyyatlar ardıcıl şəkildə icra olundular. Lakin proqramlaşdırmada budaqlanma alqoritmlərindən də istifadə olunur. Başqa sözlə desək, proqramın icra olunma istiqaməti verilmiş şərtin yerinə yetirilib yetirilməməsindən asılı olaraq dəyişə bilir. Bunun üçün Python dilində if-else şərt operatoru nəzərdə tutulmuşdur.

if-else şərt operatorunun standart yazılış forması aşağıdakı kimidir:

if şərt:
    ifadə1
else:
    ifadə2

Bildiniyiniz kimi ingiliscə if sözü əgər, else isə əks halda kimi tərcümə olunur. Burada şərt kimi istənilən məntiqi ifadə istifadə oluna bilər. Şərtdən sonra operator başlığının sonunu bildirmək üçün iki nöqtə (:) qoyulmalıdır, bu simvol həmçinin else operatorundan sonra da yazılmalıdır. Buradakı ifadə1ifadə2 isə istənilən ifadə və ya ifadələr ardıcıllığı ola bilər. Beləliklə yuxarıdakı yazılışı bu cür oxuya bilərik:

Əgər şərt ödənilirsə ifadə1, əks halda ifadə2 icra olunsun.

Python dilinin if-else şərt konstruksiyası ilə bağlı üç önəmli məqamı qeyd edək:

  1. Konstruksiyada iki nöqtə (:) simvolunun yazılması zəruridir. Bu simvol operator başlığı ilə icra olunacaq ifadəni (və ya ifadələr ardıcıllığını) bir-birindən ayırır.
  2. İki nöqtədən sonra gələn sətir aralıqla (indent) verilməlidir. Skript fayllarında bu məsafə standart olaraq dörd boşluq qədər təyin edilmişdir.
  3. İki nöqtədən sonra eyni aralıqla gələn bütün sətrlər verilmiş şərt daxilində icra olunurlar.

İndi isə şərt operatorunu konkret misal üzərində tətbiq edək. Deyək ki, verilmiş tam ədədin cüt və ya tək olduğunu yoxlamaq və bu haqda ekrana məlumat çıxarmaq lazımdır.

Proqramı yazmağa başlamadan öncə gəlin hansı ədədlərin cüt olduğunu müəyyənləşdirək. Bildiyiniz kimi ikiyə qalıqsız bölünən ədədlər cüt ədədlərdir. Başqa sözlə desək ədədi ikiyə böləndə alınan qalıq sıfıra bərabərdirsə, bu ədəd cüt, əks halda tək ədəddir. Xatırlayırsınızsa əvvəlki dərslərimizin birində biz qalıqlı bölmə operatorunu (%) keçmişdik. İndi bu operator bizim işimizə yarayacaq:

>>> a=int(input("Ədədi daxil edin:"))
Ədədi daxil edin:78
>>> if a % 2 == 0:
	   print("Cüt")
else:
	   print("Tək")

	
Cüt
>>>

Nə baş verdi? Əvvəlcə biz istifadəçinin input() funksiyası ilə daxil etdiyi qiyməti int() funksiyasından istifadə edərək bir-başa int tipinə çevirdik və a dəyişəninə mənsub etdik. Bundan sonra bu dəyişənin qiymətini ikiyə böləndə qalığının sıfır olub-olmadığını if-else şərt operatorunun köməyilə yoxladıq. Əgər qalıq sıfıra bərabərdirsə print() funksiyası ilə ekrana Cüt, deyilsə Tək məlumatını çıxardıq. Bu qədər sadə.

Keçək başqa bir misala. Azərbaycanın paytaxtının hansı şəhər olduğunu soruşan proqram tərtib edək. Düzgün cavab verəni alqışlayaq, səhv edəni də öyrədək. Gəlin bu proqramı skriptdə yazaq. Bunu necə etməyi artıq bilirsiniz:

sual = "Azərbaycanın paytaxtı hansı şəhərdir? "
cavab = input(sual)
if (cavab == "Bakı") or (cavab == "bakı"):
    print("Təbriklər! Cavabınız doğrudur.")
else:
    print("Təəssüflər! Cavabınız yanlışdır.")
    print("Doğru cavab: Bakı.")

Bu proqramı icra etmədən öncə gəlin onu incələyək. Burada biz əvvəlcə sual dəyişəninə vermək istədiyimiz sualı mənimsətdik. Sonra istifadəçinin klaviaturdan daxil etdiyi cavabı cavab dəyişənində yadda saxladıq. Bundan sonra isə cavab dəyişəninin qiymətini həqiqi cavabla müqayisə etdik və bu müqayisənin nəticəsindən asılı olaraq ekrana müvafiq məlumatlar çıxardıq.

Burada daha bir neçə məqama diqqətinizi cəlb etmək istəyirəm. Proqramdan da gördüyünüz kimi, biz şərt kimi mürəkkəb məntiqi ifadədən istifadə etdik. Bunu ona görə etdik ki, istifadəçi şəhər adını daxil edərkən ilk hərfi kiçik də yaza bilər. Burada məntiqi birləşdirici (məntiq operatoru) kimi or  (və ya) operatorundan istifadə etdik. Və biz burda sadə ifadələri mötərizə daxilində yazdıq. Əslində buna məcbur deyildik, sadəcə mürəkkəb ifadə bizim üçün daha aydın olsun deyə bunu etdik. 

Daha bir məqam isə else: operatorundan sonra iki ifadənin icra olunmasıdır. Xatırlayırsınızsa yuxarıda qeyd etmişdik ki, iki nöqtədən sonra eyni aralıqla gələn bütün sətrlər verilmiş şərt daxilində icra olunurlar. Eyni qayda if (şərt): operatorundan sonra eyni aralıqla gələn sətrlər üçün də keçərlidir.

Proqramı icra edin və suala doğru və yanlış cavablar verərək nəticələri yoxlayın.

Məntiqi ifadələr və məntiq tipi

Biz yuxarıda müqayisə operatorlarını nəzərdən keçirdik. Müqayisə operatorlarından istifadə edilərək qurulan və nəticəsi doğru (True) və ya yalan (False) olan ifadələr məntiqi ifadələr adlanır. Deməli məntiqi ifadələrin nəticəsi bizə məntiq (bool) tipində qiymətlər (True və ya False) verəcək. Beləliklə də biz Python dilinin daha bir tipi olan bool tipi ilə tanış oluruq.

Gəlin sadə məntiqi ifadələri misallarla göstərək:

>>> x = 2 * 2
>>> x == 4
True
>>> x == 5
False
>>>

Məncə hər şey aydındır. İki vur iki dörddür. Bunu bütün dünya bilir və bu hər zaman da belə olacaq. Python da bunu bilir və ona görə də x == 4 məntiqi ifadəsinin nəticəsini True (doğru), x == 5 ifadəsinin nəticəsini də False (yalan) olaraq verir.

  Digər misalları nəzərdən keçirək:

>>> x = 2 * 2
>>> x != 5	 
True
>>> x > 5	 
False
>>> x < 5	 
True
>>> x >= 4	 
True
>>> x <= 4	 
True
>>>

Biz məntiqi ifadənin nəticəsini başqa bir dəyişəndə yadda saxlaya bilərik:

>>> x = 2 * 2
>>> y = x == 5
>>> print(y)
False
>>>

Burada qeyd etmək lazımdır ki, müqayisə operatorlarının icra olunma öncəliyi mənimsətmə operatorundan daha yüksəkdir. Odur ki, yuxarıdakı proqramda əvvəlcə x == 5 ifadəsi icra olunur, daha sonra da bu ifadənin məntiqi nəticəsi y dəyişəninə mənimsədilir.

Yuxarıda qeyd etmişdik ki, məntiqi ifadələrin icrası bizə bool (məntiq) tipində qiymətlər verir. Buna type() funksiyasından istifadə etməklə əmin ola bilərik:

>>> x = 2 * 2
>>> type(x == 5)
<class 'bool'>
>>>

İndi isə verilən qiyməti bool tipinə çevirən bool() funksiyasını nəzərdən keçirək:

>>> bool(5)
True
>>> bool(0)
False
>>> bool(-2.3)
True
>>> bool("Bakı")
True
>>> bool("")
False
>>>

Yuxarıdakı misallardan da gördüyünüz kimi ədəd (tam və ya həqiqi) tipində olan və sıfırdan fərqli (müsbət və ya mənfi) qiymətlər məntiq tipinə çevriləndə True qiymətini alırlar. Sıfıra (0 və ya 0.0) bərabər qiymət isə məntiq tipinə çevriləndə False qiymətini alır. Burada bir maraqlı məqama da diqqət yetirin. Əgər str (sətir) tipində olan qiymətlər heçnə (“”) deyillərsə, o zaman onlar bool (məntiq) tipinə çevriləndə True, əks halda isə False qiymətini alırlar.

Mürəkkəb ifadələr

Bütün yüksək səviyyəli proqramlaşdırma dillərində daha sadə elementlərdən mürəkkəb sistemlərin təşkil edilməsi imkanı nəzərdə tutulmuşdur. İndiyə qədər yazdığımız proqramlarda özümüz də fərq etmədən biz bu konsepsiya ilə qarşılaşmışıq.

Məsələn, deyək ki, biz iki ədədin cəmini ekrana çapa vermək istəyirik. Burada iki müxtəlif əməliyyat mövcuddur: ədədləri cəmləmək və nəticəni ekrana çıxarmaq. Bu iki əməliyyatı bir ifadədə yazmaq mümkündür:

>>> print(3+2)
5
>>>

Biz bu məntiqlə daha mürəkkəb ifadələr qura bilərik. Ümumiyyətlə ifadələri bir neçə üsuldan istifadə etməklə kombinə etmək olar. Gəlin bu üsulları nəzərdən keçirək.

Birinci üsul kimi biz ifadələri iç-içə daxil edə bilərik:

>>> a = 10 * 2 / 8
>>> int(a ** a)
9
>>>

Yuxarıdakı proqramın birinci sətrində əvvəlcə 10 ilə 2 bir-birinə vurulur, alınan hasil 8-ə bölünür və nəticə a dəyişəninə mənimsədilir. İkinci sətirdə isə a dəyişəni özü dəfə qüvvətə yüksəldilir və alınan nəticə int() funksiyası ilə tam ədəd tipinə çevrilir.

İkinci üsul isə ifadələrin sıralanmasıdır:

>>> b = (11 + 22) * 3; print(b)
99
>>>

Bu proqramda iki ifadə (mənimsətməçap etmə) bir-birindən nöqtə-vergül (;) simvolu ilə ayrılıb. Burada ikinci ifadə birinci ifadədən sonra icra olunur. Ümumiyyətlə istənilən proqram ifadələr ardıcıllığından ibarətdir. Biz Python dilində proqramlarda ifadələri ayrı-ayrı sətirlərdə yazdığımıza görə hər ifadənin sonuna nöqtə-vergülün qoyulması məcburi deyil. Çünki bu halda ifadələri bir-birindən ayıran sətir sonlarıdır.  Lakin ifadələr yuxarıdakı misalda olduğu kimi eyni bir sətirdə yazılarsa, o zaman onlar bir-birindən nöqtə-vergül (;) simvolu ilə ayrılmalıdır.

Əməliyyatların ardıcıllığı

Əksər proqramlaşdırma dilləri bir ifadədə bir neçə əməliyyatı qruplaşdırmağa imkan verir. Bununla da proqram kodları daha yığcam olur.  Məsələn, deyək ki, biz 20 ədədinin 80-nin neçə faizi olduğunu hesablamaq istəyirik:

>>> print(100*20/80,"%")
25.0 %
>>>

Bu misalı nəzərdən keçirsək görəcəyik ki, burada print() funksiyasının daxilində bir neçə əməliyyat icra olunur. Əvvəlcə 100 ilə 20 bir-birinə vurulur, sonra alınan nəticə 80-ə bölünür və əldə edilən qiymətin sonuna % simvolu əlavə edilir. Sonda isə yekun nəticə ekrana çıxarılır.

Əgər bir ifadədə birdən çox əməliyyat varsa, bu əməliyyatların icra olunma ardıcıllığı onların ifadədə yerləşmə sırasından və icra olunma öncəliyindən asılıdır. Python proqramlaşdırma dilində əməliyyatların icra olunma öncəlikləri riyaziyyatda olduğu kimidir.

Ən yüksək öncəlik dərəcəsi mötərizələr daxilindəki əməliyyatlarındır. Onlar hər zaman ilk öncə icra olunurlar. Həmçinin mötərizələrdən istifadə etməklə ifadələrin özümüz üçün daha anlaşıqlı və rahat oxunmasına nail olmaq mümkündür. Bu  halda onlar nəticəyə heç bir təsir göstərmir:

>>> print(2*(3+7))
20
>>> print((100*20)/80,"%")
25.0 %
>>>

Əməliyyatların icrasında növbəti öncəlik isə qüvvətə yüksəltmədir:

>>> print(2**2+1)
5
>>> print(3*2**3)
24
>>>

Vurma və bölmə, eləcə də tam bölmə və qalıqlı bölmə əməliyyatlarının toplama və çıxma əməlyyatlarına görə icra olunma öncəlikləri vardır:

>>> print(2*3-1)
5
>>> print(5/2+3)
5.5
>>> print(9//2+6)
10
>>> print(7%2+3)
4
>>>

Əgər bir ifadə daxilində eyni öncəlik dərəcəsi olan operatorlar varsa, onların icra olunma ardıcıllığı soldan sağa doğru olacaq:

>>> print(10*20/8//3%5)
3.0
>>>

Biz yuxarıda yazdığımız proqramlarda qiymətlərdən istifadə etdik. Siz eyni əməliyyatları dəyişənlər üzərində də yerinə yetirə bilərsiniz.

Sonda onu da qeyd edək ki, növbəti dərslərimizdə Python dilinin digər operatorları ilə də tanış olacağıq. Bu operatorların icra olunma öncəlikləri haqqında da o zaman danışılacaq. Amma səbri çatmayanlar Operatorların Öncəlik Sırası Cədvəlinə indi də baxa bilər:

OperatorTəyinatı
**Qüvvətə yüksəltmə operatoru
~  +  –Bit əsaslı inkar, unar plyus və unar minus operatorları
*  /  //  %Vurma, bölmə, tam bölmə və qalıqlı bölmə operatorları
+  –Toplama və çıxma operatorları
>>  <<Bit əsaslı sağa sürüşdürmə və sola sürüşdürmə operatorları
&Bit əsaslı  operatoru
^  |Bit əsaslı vəya deyil və vəya operatorları
<=  <  >  >=Müqayisə operatorları
!=  <>  == Bərabərlik operatorları
 =  %=  /=  //=  -=  +=  *=  **=Mənimsətmə operatorları
is  is notİdentiklik operatorları
in  not inÜzvlük operatorları
not  or  andMəntiq operatorları

Bu cədvəldə yüksəkdən aşağıya doğru operatorların icra olunma öncəlikləri göstərilmişdir.

Tip çevrilmələri

Proqramlaşdırmada bəzən bir tipdə olan məlumatı başqa bir tipə çevirmək lazım gəlir. Hər bir proqramlaşdırma dilində olduğu kimi Python dilində də tip çevrilmələrini həyata keçirən funksiyalar mövcuddur. Bu dərsdə bu funksiyalardan bir neçəsini nəzərdən keçirəcəyik.

int()

Bu funksiya verilən qiyməti int (tam ədəd) tipinə çevirir. Əgər çevrilmə mümkün deyilsə istisna hal qeydə alınır.

>>> int("2015")
2015
>>> int("Salam")
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    int("Salam")
ValueError: invalid literal for int() with base 10: 'Salam'
>>> int(3.9)
3
>>> int(-2.3)
-2
>>> 

Gəlin nümunələri incələyək. Əvvəlcə biz sətir tipində olan “2015” qiymətini tam ədəd tipinə çevirdik. Çevrilmə baş verdi və növbəti sətirdə tam ədəd tipində 2015 qiymətini əldə etdik.

Sonra biz yenə sətir tipində olan “Salam” qiymətini tam ədəd tipinə çevirməyə cəhd etdik. Çevrilmə baş vermədiyinə görə istisna hal qeydə alındı. 

Növbəti misallarda isə biz həqiqi ədəd tipindəki qiymətlərin (3.9-2.3) tam ədəd tipinə çevrilməsini istədik. Bunu həyata keçirən int() funksiyası qiymətlərin kəsr hissəsini atıb tam hissəsini saxladı.

float()

Bu funksiya verilən qiyməti float (həqiqi ədəd) tipinə çevirir. Əgər çevrilmə mümkün deyilsə istisna hal qeydə alınır.

>>> float(32)
32.0
>>> float("5.45")
5.45
>>> float("Kitab")
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    float("Kitab")
ValueError: could not convert string to float: 'Kitab'
>>> 

Gəlin nümunələri incələyək. Əvvəlcə biz tam ədəd tipində olan 32 qiymətini həqiqi ədəd tipinə çevirdik. Çevrilmə baş verdi və növbəti sətirdə həqiqi ədəd tipində 32.0 qiymətini əldə etdik.

Sonra biz sətir tipində olan “5.45” qiymətinin həqiqi ədəd tipinə çevrilməsini istədik. Buna həyata keçirən float() funksiyası növbəti sətirdə bizə həqiqi ədəd tipində 5.45 qiymətini verdi.

Daha sonra biz sətir tipində olan “Kitab” qiymətini həqiqi ədəd tipinə çevirməyə cəhd etdik. Çevrilmə baş vermədiyinə görə istisna hal qeydə alındı.

str()

Bu funksiya verilən qiyməti str (sətir) tipinə çevirir.

>>> str(1978)
'1978'
>>> str(7.62)
'7.62'
>>> 

Nümunələrdən də gördüyünüz kimi str funksiyası verilən tam və həqiqi ədəd tipindəki qiymətləri sətir tipinə çevirir.

Onu da qeyd edim ki, Python dilində tip çevrilmələrini həyata keçirən digər funksiyalar da mövcuddur. Biz onlar haqqında gələcək dərslərimizdə bəhs edəcəyik.

İndi isə daha maraqlı bir proqram üzərində işləyək. Daha öncə yazdığımız iki ədədi toplayan proqramı xatırlayırsınız?

>>> a = 15
>>> b = 20
>>> c = a + b
>>> print(c)
35
>>>

Bu proqram yalnız əvvəlcədən verilən ədədləri toplayırdı. Amma daha yaxşı olardı ki, biz elə bir proqram yazaq ki, o istifadəçinin verdiyi ədədləri toplaya bilsin. Yəni hər bir istifadəçi toplamaq istədiyi ədədləri klaviaturdan özü daxil edə bilsin. Yəgin ki, anladınız. Biz burda qiymətlərin input() funksiyasından istifadə etməklə klaviaturdan daxil edilməsini nəzərdə tuturuq.

O zaman toplama proqramını aşağıdakı kimi yazmalıyıq:

>>> a = input("1-ci ədədi daxil edin: ")
1-ci ədədi daxil edin: 22
>>> b = input("2-ci ədədi daxil edin: ")
2-ci ədədi daxil edin: 33
>>> c = a + b
>>> print("Ədədlərin cəmi: ",c)
Ədədlərin cəmi: 2233
>>>

Gəlin bu proqramı incələyək. Biz burada ab dəyişənlərinə istifadəçinin klaviaturdan daxil etdiyi 2233 qiymətlərini mənimsətdik. Bundan sonra ab dəyişənlərinin qiymətlərini toplayıb nəticəni c dəyişənində saxladıq və onu ekrana çapa verdik. Məntiqlə ekrana cavab kimi 55 çıxmalı idi, amma 2233 çıxdı. Burada semantik xəta baş verdi. Yəni proqram bizim ondan gözlədiyimiz nəticəni vermədi.

Sizcə niyə? Əgər xatırlayırsınızsa input() funksiyasını öyrənərkən qeyd etmişdik ki, bu funksiya çağrıldığı zaman istifadəçi məlumatı daxil edib enter düyməsinə vurduqda funksiya bu məlumatı  str (sətir) tipində özündə saxlayacaq. Deməli istifadəçinin daxil etdiyi 2233 qiymətləri ab dəyişənlərinə əslində “22”“33” kimi ötürülür. Yəni bu qiymətlərin tipi str (sətir) olduğuna görə ab dəyişənlərinin də tipi str (sətir) olacaq. Belə olduğu təqdirdə sətir tipində olan qiymətləri toplayanda onlar birləşdirilmiş (yan-yana gəlmiş) olacaq.

Bəs nə etməli? Axı bizə riyazi toplama lazımdır. Bax elə bu məqamda biz tip çevrilməsini həyata keçirən müvafiq funksiyadan istifadə etməliyik. Konkret olaraq bizə daxil edilən str (sətir) tipində məlumatı int (tam ədəd) tipinə çevirən int() funksiyası lazımdır. Yəni biz str tipində olan ab dəyişənlərinin tipini int olaraq dəyişməliyik.

Deyilənləri nəzərə alaraq toplama proqramında lazımi düzəlişləri edək:

>>> a = input("1-ci ədədi daxil edin: ")
1-ci ədədi daxil edin: 22
>>> b = input("2-ci ədədi daxil edin: ")
2-ci ədədi daxil edin: 33
>>> c = int(a) + int(b)
>>> print("Ədədlərin cəmi: ",c)
Ədədlərin cəmi: 55
>>>

Gördüyünüz kimi biz c = a + b ifadəsini c = int(a) + int(b) ifadəsi ilə dəyişdik. Yəni str tipində olan ab dəyişənlərinin tipini int olaraq dəyişdikdən sonra onları topladıq. Nəticədə ekrana 55 çıxdı.

Biz eyni proqramı aşağıdakı üsulla da yaza bilərdik:

>>> a = int(input("1-ci ədədi daxil edin: "))
1-ci ədədi daxil edin: 22
>>> b = int(input("2-ci ədədi daxil edin: "))
2-ci ədədi daxil edin: 33
>>> c = a + b
>>> print("Ədədlərin cəmi: ",c)
Ədədlərin cəmi: 55
>>>

Burada biz istifadəçinin input() funksiyası ilə daxil etdiyi qiymətləri int() funksiyasından istifadə edərək bir-başa int tipinə çevirib sonra dəyişənlərə mənsub etdik. Bundan sonra ab dəyişənlərini riyazi olaraq toplayıb yenə nəticəni c dəyişənində yadda saxladıq və ekrana çapa verdik.

Operator və operandlar

İndi isə gəlin bir az da operatorlar haqqında danışaq. Operatorlar, müəyyən əməliyyatları həyata keçirən konstruksiyalardır. Bu konstruksiyalar xüsusi simvol və ya simvollar ardıcıllığından ibarətdir. Hər bir operator bir və ya bir neçə operand üzərində əməliyyat aparır.

Məsələn sadə toplama proqramını nəzərdən keçirək:

>>> a = 15
>>> b = 20
>>> c = a + b
>>> print(c)
35
>>>

  Burada c = a + b ifadəsində + simvolu toplama əməlini həyata keçirən cəm operatorudur. Bu ifadədə yer alan ab dəyişənləri isə operandlardır. Qeyd etmək lazımdır ki, operand kimi həm qiymətlər, həm də dəyişənlər istifadə edilə bilər.

  Python proqramlaşdırma dilində operatorlar aşağıdakı kimi sinifləndirilir:

  • Hesab operatorları
  • Müqayisə operatorları
  • Mənimsətmə operatorları
  • Məntiq operatorları
  • Bit operatorları
  • Üzvlük operatorları
  • İdentiklik operatorları

  Biz növbəti dərslərimizdə yeri gəldikcə bu operatorları daha yaxından incələyəcəyik. Burada qeyd edim ki, bu kitabın məqsədi sadədən mürəkkəbə doğru öyrətmək olduğuna görə, Python dilinin yuxarıda təsnif edilən operatorları ardıcıl şəkildə ələ alınmayacaq.

Tiplər

   Hər bir proqramlaşdırma dilində olduğu kimi Python dilində də verilənlərin və eləcə də istifadə olunan dəyişənlərin tipi olur. Lakin Python dilində dəyişənlərin aşkar şəkildə tiplərini təyin etməyə ehtiyac yoxdur. Belə ki, biz bir dəyişənə müəyyən bir qiyməti mənimsədərkən, Python özü bu qiymətə əsasən dəyişənin tipini təyin edir. Əgər bundan sonra biz bu dəyişənə fərqli tipdə bir qiymət mənimsətsək, Python yenə bunu görəcək və dəyişənin tipini dəyişəcək.

Daha öncə yazdığımız Azərbaycan proqramını xatırlayırsınız?

>>> s1 = "Azərbaycan"
>>> s2 = "Bakı"
>>> n1 = 86.6
>>> n2 = 9600000
>>> print(s1)
Azərbaycan
>>> print(s2)
Bakı
>>> print(n1)
86.6
>>> print(n2)
9600000
>>>

Biz burada s1 s2 dəyişənlərinə sətir tipli məlumat mənimsətdiyimizə görə Python da bu dəyişənlərin tipini str (sətir) tipi olaraq təyin edəcək. Eynilə n1 dəyişəni həqiqi ədəd tipli qiymət aldığı üçün float tipində, n2 dəyişəni də tam ədəd tipli qiymət aldığı üçün int tipində qəbul ediləcək.

  Nəzərinizə çatdırım ki, Python proqramlaşdırma dilində int, floatstr tiplərindən başqa digər tiplər də var və onlar haqqında növbəti dərslərimizdə bəhs edəcəyik.

Mənimsətmə operatoru

Əvvəlki dərslərimizdə biz mənimsətmə operatorundan (=) istifadə etmişdik. Mənimsətmə operatoruna bəzən mənsubetmə operatoru da deyilir. Bu dərsimizdə mənimsətmə operatoru haqda daha çox şey öyrənəcəyik.

Gəlin aşağıdakı misalları nəzərdən keçirək:

>>> s1 = "Azərbaycan"
>>> s2 = "Bakı"
>>> n1 = 86.6
>>> n2 = 9600000
>>> print(s1)
Azərbaycan
>>> print(s2)
Bakı
>>> print(n1)
86.6
>>> print(n2)
9600000
>>>

   Biz burada dörd dəyişəndən (s1, s2, n1, n2) istifadə etdik. Burada mənimsətmə operatoru olan bərabər (=) simvolunun solunda və sağında operandlar yer alır. İndiki halda soldakı operandlar dəyişənlər, sağdakılar isə qiymətlər rolunda çıxış edir. Məsələn s1= “Azərbaycan” ifadəsində s1 operandı dəyişəndir, “Azərbaycan” operandı isə bu dəyişənə mənimsədilən qiymətdir.

   Misallardan gördüyünüz kimi, s1 s2 dəyişənlərinə mənimsədilən qiymətlər (“Azərbaycan” “Bakı”) dırnaq arasında yazılır, çünki bu məlumatlar sətir tipindədir. Digər iki dəyişənə (n1n2) mənimsədilən qiymətlər (86.69600000) isə ədəd tipində olduqları üçün dırnaq işarələrindən istifadə edilmir. Burada 9600000 qiyməti tam ədəd, 86.6 qiyməti isə həqiqi ədəd tipindədir.

  Qeyd etmək lazımdır ki, əksər proqramlaşdırma dillərində olduğu kimi Python dilində də həqiqi ədədlərdə tam və kəsr hissəni ayıran ayırıcı işarə nöqtə (.) simvoludur.

Keçək növbəti misallara:

>>> a = 10
>>> b = a
>>> print(b)
10
a = "salam"
>>> print(a)
salam
>>> 

  Burada iki dəyişəndən (a b) istifadə edilir. Əvvəlcə biz a dəyişəninə 10 qiymətini mənimsədirik, sonra isə b dəyişəninə a dəyişəninin özünü mənimsədirik. Gördüyünüz kimi bir dəyişənə başqa bir dəyişəni mənimsətmək mümkündür. Bundan sonra b dəyişəninin qiymətini print əmri ilə ekrana çapa veririk. Nəticədən də gördüyünüz kimi bu zaman ekrana a dəyişəninə daha öncədən mənimsədilmiş olan 10 qiyməti çıxır.

Daha sonra biz a dəyişəninə yeni bir qiymət (“salam”) mənimədib ekrana çapa veririk. Gördüyünüz kimi ekrana a dəyişəninin yeni qiyməti çıxır. Və diqqət edin, a dəyişəninə fərqli tipdə olan yeni qiymət mənimsədildiyinə görə a dəyişəni də öz tipini dəyişir. İndiki halda əvvəlcə a dəyişəninin tipi tam ədəd (int), sonra isə sətir (str) tipi olur. Biz irəlidə tipləri daha ətraflı şəkildə nəzərdən keçirəcəyik.

with operatoru

Python 2.5 versiyasından etibarən tətbiq olunan with operatoru əmrlər axınını idarə etmək və kodu sadələşdirmək məqsədilə istifadə olunur. Bu operatorun sintaksisi aşağıdakı kimidir:

with əməliyyat:
    kod

   Burada əməliyyat hər hansı bir obyekt, ifadə və ya konstruksiyadır, kod isə proqram kodudur. Biz əməliyyat olaraq ifadə as dəyişən konstruksiyasından da istifadə edə bilərik:

with ifadə as dəyişən:
    kod 

Gəlin aşağıdakı nümunəni nəzərdən keçirək:

with open('region.txt','w') as f:
    f.write('Qafqaz')

   Yuxarıdakı proqram kodunda əvvəlcə fayl açılır və : simvolundan sonra əmrlər bloku icra olunur. İndiki halda blokda fayla məlumatın yazılması həyata keçirilir, lakin blok daxilində digər əməliyyatlar da nəzərdə tutula bilərdi. Burada with operatorunun istifadəsi ona imkan verir ki, əmrlər blokunun icrası bitdikdən sonra fayl obyekti avtomatik olaraq bağlansın. Fayl obyekti hətta blok daxilində istisna (exception) baş versə də bağlanmış olacaq. Əgər with operatorundan istifadə edilməsəydi, proqram kodu bu qədər sadə alınmayacaqdı.

Çoxlu mənimsətmə

Python proqramlaşdırma dili çoxlu mənimsətməyə imkan verir. Bu iki şəkildə mümkündür:

  • Eyni zamanda bir neçə dəyişənə eyni qiymətlərin mənimsədilməsi;
  • Eyni zamanda bir neçə dəyişənə müxtəlif qiymətlərin mənimsədilməsi.

Gəlin aşağıdakı misalı nəzərdən keçirək:

>>> a = b = c = 1
>>> print(a, b, c)
1 1 1 
>>>

  Burada üç dəyişəndən (a, b, c) istifadə etdik. Bu üç dəyişənə eyni zamanda eyni bir qiymət (1) mənimsədilir və print əmri ilə ekrana çapa verilir. Nəticədə ekrana hər üç dəyişənin almış olduğu eyni qiymətlər (1 1 1) çıxır.

Aşağıdakı misal isə bir neçə dəyişənə müxtəlif qiymətlərin mənimsədilməsini nümayiş etdirir:

>>> a, b, c = 1, 2, 3
>>> print(a, b, c)
1 2 3 
>>>

Burada isə üç dəyişənə eyni zamanda fərqli qiymətlər (1, 2, 3) mənimsədilir və print əmri ilə ekrana çapa verilir. Nəticədə ekrana hər üç dəyişənin almış olduğu fərqli qiymətlər (1 2 3) çıxır.