Ədəd tipləri

Python proqramlaşdırma dilində üç müxtəlif ədəd tipi var: tam (int), həqiqi (float) və kompleks (complex). int və float tipləri ilə siz artıq tanışsınız. Bunlarla bağlı bir neçə məqamı qeyd etdikdən sonra complex tipindən də danışacağıq.

int

int tam ədəd tipində ədədlər istənilən uzunluqda ola bilər. Daha doğrusu, int tipindəki ədədin uzunluğu kompüterin əməli yaddaşının verdiyi imkanla məhdudlaşır. Adi insanlar gündəlik həyatda onluq say sistemindəki ədədlərlə işləyir, amma proqramçılara həm də ikilik, səkkizlikonaltılıq ədədlər lazım olur. Python dilində önlərinə müvafiq prefikslər qoymaqla bu ədədləri təsvir etmək mümkündür:

Say sistemiPrefiks
ikilik (binary)0b və ya 0B
səkkizlik (octal)0o və ya 0O
onaltılıq (hexadecimal)0x və ya 0X

İnterpretator prefikslərin köməyilə təsvir etdiyimiz ikilik, səkkizlikonaltılıq ədədləri onluq say sistemində göstərəcək:

>>> 0b1101011 
107
>>> 0xFB + 0b10 
253
>>> 0o15 
13
>>>

Müxtəlif say sistemlərində olan ədədləri onluq sistemə çevirmək üçün iki parametrli int(x, b) funksiyasından istifadə olunur. Burada x digər say sistemində olan ədəddir və dırnaq arasında göstərilməlidir. İkinci parametr olan b isə verilmiş ədədin hansı say sistemində olduğunu bildirmək üçündür. Burada say sisteminin əsası kimi [2…36] aralığında qiymət göstərə bilərik:

>>> int("1001", 2) 
9
>>> int("15", 8) 
13
>>> int("0xFB", 16) 
251
>>>

Onluq say sistemindəki bir ədədi ikilik, səkkizlikonaltılıq sistemə çevirmək üçün müvafiq olaraq bin(x), oct(x)hex(x) funksiyalarından istifadə olunur. Burada x onluq say sistemindəki ədəddir:

>>> bin(9) 
'0b1001' 
>>> oct(13) 
'0o15'
>>> hex(251) 
'0xfb'
>>>

float

Python dilində həqiqi ədədlərlə işləmək üçün float tipi nəzərdə tutulmuşdur. Bu tipin qiymət aralığı aşağıdakı kimi təyin edilmişdir:

[2.2250738585072020𝑥10-308 . . . 1.7976931348623157𝑥10308]

Bu sərhədlər pozulduqda interpretator xəta mesajı verir:

>>> a = 3 ** 1000
>>> a + 0.1
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module> 
    a + 0.1
OverflowError: int too large to convert to float 
>>>

Onu da qeyd etmək lazımdır ki, float tipində verilən ədədlər vergüldən sonra 15 işarə dəqiqliyində ola bilir (16-cı mövqe qeyri-dəqiqdir):

>>> 1.1234567890123456789 
1.1234567890123457
>>>

Hesablamalarda daha yüksək dəqiqlik tələb olunursa, decimal moduluna müraciət etmək lazımdır.
Python proqramlaşdırma dilində həqiqi ədədlər adi qaydadan başqa, eksponensial formatda da təsvir oluna bilər. Bu zaman eksponent E və ya e simvolları ilə verilir. Eksponensial formatda təsvir edilən həqiqi ədədi interpretator adi qaydada göstərəcək:

>>> 123.45 
123.45
>>> 1.2345e2 
123.45
>>> 5.45E-2 
0.0545
>>>

Sonda onu da qeyd edək ki, rasional ədədlər ilə bağlı hesablamalar üçün Python dilində ayrıca fractions modulu nəzərdə tutulmuşdur.

complex

Python proqramlaşdırma dilində kompleks ədədlərlə işləmək üçün complex adlı xüsusi bir tip nəzərdə tutulmuşdur. Bildiyiniz kimi, kompleks ədədlər iki hissədən ibarətdir: həqiqixəyali. Kompleks ədədlər a+bj şəklində göstərilir. Burada a həqiqi hissə, b isə xəyali hissənin əmsalıdır və hər ikisi ədəd (int, float və həmçinin complex) tipində qiymət və ya dəyişən ola bilər.

Buradakı j (və ya J) isə √-1 xəyali ədədinin özünü bildirən xüsusi simvoldur:

>>> 3+4j 
(3+4j)
>>> 2.5+7.7J 
(2.5+7.7j) 
>>>

Kompleks ədədləri iki parametrli complex(a, b) funksiyasından istifadə etməklə də vermək olar.
Burada yenə a həqiqi, b isə xəyali hissənin əmsalıdır:

>>> complex(3, 4) 
(3+4j)
>>> x = complex(1, 2) 
>>> print(x)
(1+2j) 
>>>

Bir parametrli complex(s) funksiyası isə verilmiş sətir və ya ədədi kompleks ədədə çevirir. Burada çevirmək istədiyimiz ifadə (s) sətir tipində olub dırnaq arasında verilməlidir:

>>> complex("2+3j") 
(2+3j)
>>> complex("4") 
(4+0j)
>>> complex("2j") 
2j
>>> complex()
0j
>>> complex("info")
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module> 
    complex("info")
ValueError: complex() arg is a malformed string 
>>>

Sonuncu misaldan da gördüyünüz kimi, verilmiş ifadəni kompleks ədədə çevirmək mümkün olmadıqda interpretator xəta mesajı verir. Eyni xəta ifadə içərisində + operatorlarının ətrafında boşluqlar olanda (məsələn: complex(“2 + 3j”) yazıldıqda) da qeydə alınır.
Kompleks ədədlər üzərində toplama, çıxma, vurma və bölmə əməliyyatlarını yerinə yetirmək olar:

>>> x = 2+3j 
>>> y = 1+2j 
>>> x + y 
(3+5j)
>>> x - y 
(1+1j) 
>>> x * y 
(-4+7j) 
>>> x / y 
(1.6-0.2j) 
>>>

İki kompleks ədədi bir-birilə müqayisə (>, <, >=, <=) etmək olmaz, lakin onların bir-birinə bərabərliyini yoxlamaq olar:

>>> x = 2+3j
>>> y = 1+2j
>>> x > y
Traceback (most recent call last):
  File "<pyshell#29>", line 1, in <module> 
    x > y
TypeError: unorderable types: complex() > complex() 
>>> x == y
False
>>>

Sonda kompleks ədədlər ilə bağlı bir neçə metodu da nəzərdən keçirək. Buradan “bəs metod nədir?” sualınızı eşidirəm 🙂 Əvvəlcədən qeyd edim ki, biz metodlar haqqında daha ətraflı obyekt yönlü proqramlaşdırmanı keçəndə bəhs edəcəyik. Hələlik isə onu bilməyiniz kifayətdir ki, metodlar da əslində funksiyalardır. Biz onları obyektlərə (indiki halda kompleks tipdə qiymət və ya dəyişənə) nöqtəli notasiya ilə tətbiq edirik. Yəni əvvəlcə qiymət və ya dəyişənin adını yazır, sonra nöqtə qoyur, ardınca da metodu qeyd edirik:

>>> x = 2+3j
>>> x.real # kompleks ədədin həqiqi hissəsi 
2.0
>>> x.imag # kompleks ədədin xəyali hissəsi 
3.0
>>> x.conjugate() # kompleks ədədin qoşması 
(2-3j)
>>>

Kompleks ədədlər ilə bağlı Python dilinin cmath modulunda bir sıra riyazi funksiyalar nəzərdə tutulmuşdur.

Ədəd tipləri” üçün bir şərh

Şərh üçün bağlıdır.