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.

 

Muutujaid võib võrrelda maitseainete topsidega. Allikas: Eno Tõnissoni erakogu

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, while ja tõeväärtusi 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 max leida mitmest suurusest suurima. Näiteks 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 (5 + 3 annab tulemuseks 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 str, et arv esmalt sõneks teisendada. Näiteks kui muutuja arv sisaldaks väärtust 5, siis str(arv) annaks väärtuse "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.

Litsents

Icon for the Creative Commons Attribution 4.0 International License

Programmeerimine on loodud Eno Tõnisson, Tauno Palts, Merilin Säde, Kaarel Tõnisson jt poolt Creative Commons Attribution 4.0 International License litsentsi alusel, kui pole teisiti märgitud.

Jaga seda raamatut