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.