Arvud Pythonis

Pytonis on olemas kolm erinevat viisi, kuidas numbreid esitada. Number andmetüübi alla kuuluvad järgmised numbrilised andmetüübid:

  • Täisarv (integer, int)

  • Ujukomaarv (float)

  • Kompleksarv (complex)

Täisarv ehk int

Pythoni täisarvu andmetüübi nimi on integer ehk int, mis võib olla nii positiivse kui ka negatiivse väärtusega, kuid mis ei tohi sisaldada komasid. Näiteks, 10 on integer, aga 10.0 on juba teine andmetüüp - float. Et teha kindlaks, mis andmetüüpi on mingi väärtus, siis selleks võib kasutada type() funktsiooni, mis näitab ära, kuhu klassi mingi number kuulub.

>>> print(type(10))
<class 'int'>
>>> print(type(10.0))
<class 'float'>

Täisarvu võib esitada nii kümnendsüsteemis, kui ka kahend-, kaheksand- ja kuueteistkümnendsüsteemis. Numbrisüsteemide eristamiseks kasutatakse eesliiteid (prefix). Eesliide on kujul 0? ehk see algab nulliga ja vastavalt numbrisüsteemile kasutatakse ? asemel numbrisüsteemi sümbolit. Kümnendsüsteemi numbrite puhul eesliiteid ei kasutata. - b: kahendsüsteem - o: kaheksandsüsteem - x: kuueteistkümnendsüsteem

>>> d = 13  # decimal
>>> print(d)
13
>>> b = 0b11011010  # binary
>>> print(b)
218
>>> o = 0o15  # octal
>>> print(o)
13
>>> x = 0x10  # hexadecimal
>>> print(x)
16

Pythonis ei tohi int tüüpi väärtus alata nullidega kümnendsüsteemi numbrite puhul, kui pole tegu just nulliga.

>>> nr = 01
>>> print(nr)
SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers

Kui tegemist on suurte int tüüpi numbritega, siis loetavuse parandamiseks võib numbreid eraldada piiritlejaga (delimiter), milleks on Pythonis allkriips _.

>>> x = 1_000_000_000
>>> print(x)
1000000000

Täisarvu saab esitada ja salvestada ka sõnena:

>>> s = "110"
>>> print(s)
110
>>> print(type(s))
<class 'str'>

Kümnendsüsteemi numbreid, mis on esitatud sõne kujul, on võimalik teisendada int andmetüübiks. int() funktsioon teisendab sõne kui ka ujukomaarvu integeriks. Sellist teisendamist saab teha ainult kümnendsüsteemi numbritega, teiste numbrisüsteemide puhul tekib ValueError.

>>> s = "110"
>>> print(s)
110
>>> print(type(s))
<class 'str'>
>>> s = int(s)
>>> print(s)
110
>>> print(type(s))
<class 'int'>

On võimalik ka teistpidine teisendus: int andmetüüpi väärtuse muuta sõneks. Selleks kasutatakse str() funktsiooni.

>>> s = 67
>>> print(s)
67
>>> print(type(s))
<class 'int'>
>>> s = str(s)
>>> print(s)
67
>>> print(type(s))
<class 'str'>

Selline teisendusviis kehtis kümnendsüsteemi numbrite puhul. Kui on tegemist mingi muu numbrisüsteemiga, siis tuleks kasutada f-string vormingut.

>>> octal = 0o15
>>> print(octal)
13
>>> print(type(octal))
<class 'int'>
>>> string_version = f"{octal}"  #decimal
>>> print(string_version)
13
>>> print(type(string_version))
<class 'str'>
>>> binary_version = f"{octal:b}"
>>> print(binary_version)  #binary
1101

Ujukomaarv ehk float

Pythonis vastavad reaalarvudele ujukomaarvud ehk floating point numbers ehk lühemalt float, mis on arvud murdosaga. Täisarvuline osa eraldatakse murdarvust punktiga. Ujukomaarve võidakse esitada kahel kujul: - 1.0, -100, -900000.9 on näited, kuidas ujukomaarve tavaliselt esitatakse. Ujukomaarvudesse saab lisada ka allkriipse: 123_42.222_013, mis väljastab terminalis: 12342.222013. - 3.4556789e2, 1e5, 1E3 on näited, kuidas ujukomaarve esitatakse teadusliku notatsiooni kujul. Kasutatakse e või E notatsiooni, et esitada väga suuri või nullilähedasi ujukomaarve.

>>> f = 3.4556789e2  # traditsioonilises matemaatikas võiks seda kirjutada nii: 3.4556789 x 10 astmel 2
>>> print(f)
345.56789
>>> f = 1e5  # traditsioonilises matemaatikas võiks seda kirjutada nii: 1 x 10 astmel 5
>>> print(f)
100000.0
>>> f = 1E3  #  traditsioonilises matemaatikas võiks seda kirjutada nii: 3.4556789 x 10 astmel 3
>>> print(f)
1000.0

Kui lisada notatsiooni ja eksponent numbri vahele + või - märk, siis saab määrata, kas number on positiivne või negatiivne arv.

>>> x = 1e-4
>>> print(x)
0.0001
>>> y = 1e+4
print(y)
10000.0

Ka ujukomaarve saab esitada sõnena. Et teisendada sõne ujukomaarvuks, tuleks kasutada float() funktsiooni.

>>> x = "1.0"
>>> print(x)
1.0
>>> print(type(x))
<class 'str'>
>>> y = float(x)
>>> print(y)
1.0
>>> print(type(y))
<class 'float'>

Kompleksarv ehk complex

Viimane numbriline andmetüüp on kompleksarvud tähistusega complex, mis sisaldavad endas tavaliste numbrite seas ka imaginaarosa, mida tähistatakse tähega j. complex-tüüpi arve ei saa teisendada teisteks numbritüüpideks.

>>> x = 3+5j
>>> print(x)
(3+5j)
>>> print(type(x))
<class 'complex'>