3 Andmetüübid
Eelmises peatükis oli meil järgnev programm:
arv = 1 if arv > 0: print("positiivne") else: print("mittepositiivne")
Selles programmis on näha mitut tüüpi andmeid. Paistavad arvud 1
ja 0
ning tekstilised suurused "positiivne"
ja "mittepositiivne"
. Pythonis (nagu ka teistes programmeerimiskeeltes) on võimalik kasutada erinevaid andmetüüpe. Meie jaoks on esialgu olulised järgmised Pythoni andmetüübid:
- Täisarvud (näiteks
10
,-4
,0
); - Ujukomaarvud (näiteks
2.5
,3.14
,-7.23
,2.0
); - Sõne / tekst (näiteks
"kass"
(või'kass'
),"koer ja hobune"
(või'koer ja hobune'
)); - Tõeväärtused (
True
võiFalse
).
Täisarvude kasutamine Pythonis on sarnane (kooli)matemaatikale.
Eraldi tüüp on koma sisaldavatele (murd)arvudele, selliseid arve nimetatakse ujukomaarvudeks. Koma rollis kasutatakse Pythonis punkti (näiteks 3,2 kirjutatakse Pythonis 3.2).
Tekstide jaoks on sõnetüüp, mille tunnuseks on jutumärgid või ülakomad. Sõne ingliskeelne vaste on string (lühendatult str).
Tõeväärtuste tüübis on vaid kaks võimalikku väärtust – True
(tõene) ja False
(väär).
Konkreetse väärtuse tüübi saab teada käsku type()
kasutades. Täisarvu tüüpi märgitakse Pythonis int
, ujukomaarvu tüüpi float
, sõne tüüpi str
ja tõeväärtuse tüüpi bool
. Proovi näiteks:
print(type(4)) print(type(4.5)) print(type("Maria")) print(type(True))
Enesekontroll (2 ülesannet)
Tüüpidega samanimeliste funktsioonide abil saame andmete tüüpi muuta. Sageli on siin tulemus selgesti ettearvatav, vahel aga võib see suhteliselt ootamatu tunduda. Nii on näiteks
väärtuseks täisarv int("1")
1
, sest sõnele "1"
on just täisarvudest 1
loomulik vaste. Samuti vastupidi str(1)
väärtuseks on sõne "1"
. Kontrolli ise, mida Python nende andmete tüüpidest arvab:
print(type(str(1))) print(type(int("1")))
Mõnedel juhtudel pole tüübiteisenduse funktsiooni väärtuse ennustamine nii lihtne. Proovi järgmisi näiteid:
print(bool(7)) print(bool(0)) print(float(True)) print(int(1.7))
Vaatame viimast rida, mis andis int(1.7)
väärtuseks 1
. Nagu näeme, ei ole tegemist ümardamisega, kuna ümardamisreeglite järgi peaks väärtus olema 2
. Ümardamiseks on Pythonis eraldi funktsioon
. Näiteks round
on tõesti round(1.7)
2
.
Erinevat andmetüüpi väärtusi on vaja erinevates olukordades, sest nendega on võimalik sooritada erinevaid tegevusi. Ka näiliselt sama tegevus võib anda erinevaid andmetüüpe kasutades erinevaid tulemusi. Oluline on ka see, et erinevat tüüpi väärtusi hoitakse arvuti mälus erinevalt – ka ruumi võtavad nad mälus erinevalt.