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'>