4 Muutujad
Kui andmed juba mälus on, siis loomulikult tahame neid ka kasutada. Konkreetsele mälupiirkonnale, kus teatud väärtus on, saab anda eraldi nime. Sellist nimega mälupiirkonda kutsutakse muutujaks. Muutujal on nimi ja muutujale väärtuse andmine käib Pythonis võrdusmärgi abil.
Tinglikult võib muutujaid võrrelda maitseainete topsidega. Selleks, et maitseaineid lihtsamini üles leida, on mõistlik topsid vastavalt sildistada. Sildi järgi leitakse vastav maitseaine paremini üles.
Eelmise peatüki lõpus mainisime, et erinevat tüüpi väärtusi kujutatakse mälus erinevalt. Laias laastus on seegi võrreldav maitseainetopsidega – need võivad olla erineva suurusega.
Muutujale nime andmine
Pythonis muutuja nime valimisel on omad reeglid ja tavad nagu näiteks tavaelus lapsele nime panemisel. (Reeglid ise on küll lapsele nimepanemise omadest mõnevõrra erinevad.) Pythonis muutujale nime panemisel tuleb silmas pidada, et nimi ei tohi sisaldada tühikuid. Tühiku asemel kasutatakse vajadusel alakriipsu (nt vanima_lapse_vanus
) või jäetakse vahe üldse ära (nt vanimaLapseVanus
). Lisaks on tavaks, et muutuja nimi on kirjutatud väikeste tähtedega (va sõnade algustähed alates teisest). Nimi ei tohi alata numbriga, aga alates teisest sümbolist võib numbreid nimes olla. Nimedena ei saa kasutada mõningaid Pythonis eritähendusega sõnu, näiteks and
,
, def
, elif
else
,
, for
, from
, if
import
,
, in
, not
, or
, pass
return
,
ja tõeväärtusi while
True
ja False
.
Soovi korral saab lugeda erinevate nimevaliku soovituste kohta ingliskeelsest Wikipedia artiklist.
Muutujale väärtuse andmine
Muutuja on kasulik siis, kui talle anda mingi väärtus – määratakse andmed, mida muutujale vastavas mälupiirkonnas hoitakse. Umbes nii, et topsis, mille peale on kirjutatud kaneel, on hoiul kaneel.
Erinevalt mitmetest teistest programmeerimiskeeltest (nt Java) ei määrata Pythonis programmeerija poolt ilmutatult, mis tüüpi väärtused antud muutujale sobivad ehk mis tüüpi muutuja on. Python saab ise aru, et väärtus 12
on täisarv, väärtus 12.1
on ujukomaarv ning väärtus "Kaua Sa kannatad kurbade naeru"
on sõne. See-eest tuleb ise tähele panna, et muutujatele õiget tüüpi väärtused ette antakse.
Programm (vanuste summa)
Vaatame nüüd näidet, kus väärtustame erinevaid muutujaid. Anname muutujale poisi_vanus
väärtuseks 12
. Selleks käivitame Thonny ning trükime uude programmiaknasse (File -> New) esimesele reale:
poisi_vanus = 12
Toome mängu vanaema, andes teisel real muutujale vanaema_vanus
väärtuseks 59
:
vanaema_vanus = 59
Talletatud infot saame kasutada samade muutujate abil. Võime näiteks leida poisi ja vanaema vanuste summa, trükkides programmi kolmandale reale:
vanuste_summa = poisi_vanus + vanaema_vanus
Ekraanile väljastamiseks tuleb lisada käsk print
:
print(vanuste_summa)
Kokku saame järgneva programmikoodi:
Näiteprogramm. Vanuste summa
poisi_vanus = 12 vanaema_vanus = 59 vanuste_summa = poisi_vanus + vanaema_vanus print(vanuste_summa)
Programmi käivitades (Run -> Run current script) peaks tulemus olema selline:
Nuputa! Kuidas leida poisi ja vanaema keskmine vanus?
Video
Vaata ka videot, kus lahendatakse poisi ja vanaema ülesandele küllaltki sarnane ülesanne. Videos näidatakse muuhulgas, kuidas Thonnys saab jooksvalt muutujate väärtusi vaadata ja programmi samm-sammult läbida.
Muutuja kasutamise järjekord
Muutujatega tegutsemisel tuleb meeles pidada, et muutuja peab enne selle kasutamist olema väärtustatud. Proovi käivitada järgmist näidet:
poisi_vanus = 12 vanuste_summa = poisi_vanus + vanaema_vanus vanaema_vanus = 59 print(vanuste_summa)
Millise teate väljastas Python? Miks selline veateade ilmnes ja kuidas viga parandada saab?
Tehted arvudega
Muutujale arvulise väärtuse omistamist me juba vaatasime. See käib näiteks nii:
lemmik_arv = 7 print(lemmik_arv)
Lisaks sellele on võimalik arvudega sooritada erinevaid tehteid. Vaata tähelepanelikult, sest mõned märgid on teistsuguse tähendusega, kui me harjunud oleme:
+
liitmine
lahutamine-
jagamine/
*
korrutamine
astendamine**
jäägi leidmine%
//
täisosa leidmine
Lisaks tehtemärkidele on olulisel kohal erinevad funktsioonid, nii saame näiteks funktsiooniga
leida mitmest suurusest suurima. Näiteks max
max(23, 56)
väärtus on 56
.
Võimalusi on veel hulga rohkem, nendega saab tutvuda Pythoni dokumentatsioonis.
Enesekontroll (1 ülesanne)
Ujukomaarvu omistamine
Järgmises näites on toodud ujukomaarvude omistamine kahele muutujale, nende summa arvutamine ja ekraanile väljastamine:
esimene_arv = 3.2 teine_arv = 10.15 arvude_summa = esimene_arv + teine_arv print(arvude_summa)
Muutuja väärtust saab programmis ka muuta. Proovige järgi, mis tulemus tuleb sellisel juhul:
esimene_arv = 3.2 teine_arv = 10.15 esimene_arv = 5 arvude_summa = esimene_arv + teine_arv print(arvude_summa)
Enesekontroll (1 ülesanne)
Tekstilise väärtuse andmine muutujale. Sõne
Eelmistes näidetes andsime muutujale väärtuseks arvu (täisarvu või ujukomaarvu). Nüüd vaatame, kuidas muutujale anda väärtuseks tekst sõnena. Tekstiline väärtus omistatakse muutujale jutumärkide (või ülakomade) vahel. Mitu teksti saame kokku panna, kasutades
märke.+
Proovi näiteks, kuidas töötab järgnev programm:
Näiteprogramm. Sõnede liitmine
nimi1 = "Mihkel" nimi2 = "Mari" tervitus = "Tere, " + nimi1 + " ja " + nimi2 + "!" print(tervitus)
Selle programmiga näeme olukorda, kus üks ja sama tehtemärk tähendab erinevate andmetüüpide puhul erinevaid asju:
- Arvude puhul tähendab
märk kahe arvu liitmist (+
annab tulemuseks5 + 3
8
). - Sõnede puhul tähendab
märk kahe sõne ühendamist üheks sõneks (+
"tere" + "tore"
annab tulemuseks"teretore"
.) Sel tehtel on ka peenem nimi – konkatenatsioon.
Nagu eelmisest programminäitest näha, siis sõned kirjutatakse jutumärkidega, muutujanimed aga ilma.
NB! Sellisel viisil saab omavahel ühendada ainult sõnesid. Arvu lisamiseks sellesse lausesse peaks kasutama funktsiooni
, et arv esmalt sõneks teisendada. Näiteks kui muutuja str
arv
sisaldaks väärtust 5
, siis
annaks väärtuse str(arv)
"5"
(sõnena), mida saaks juba teiste sõnedega liita.
Enesekontroll (1 ülesanne)
Tõeväärtuse omistamine muutujale
Kui arvud ja sõned on tuttavana tunduvad andmetüübid (oleme ju arvude ja tekstiga ikka tegutsenud), siis tõeväärtused on võib-olla mõnevõrra võõramad. Nimelt saab muutujale väärtuseks anda väärtusi True
(tõene) või False
(väär):
liigaasta = False print(liigaasta)
Tõeväärtuste tüüpi nimetatakse algebralise loogika looja George Boole’i järgi inglise keeles boolean tüübiks. Kohata võib ka sõna boolean lühendatud varianti bool. Põhjalikumalt vaatame tõeväärtuste rakendusi tingimuslausete peatüki juures.