Materjalid koostas ja kursuse viib läbi
Tartu Ülikooli arvutiteaduse instituudi programmeerimise õpetamise töörühm
< eelmine | 1. nädala sisukord | järgmine > |
1.4 Muutujad
Kui need andmed juba mälus on, siis on loomulik tahtmine 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õiks 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.
Enne oli juttu, et erinevat tüüpi väärtusi kujutatakse mälus erinevalt. Laias laastus on seegi võrreldav maitseainetopsidega - need võivad näiteks olla erineva suurusega.
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.
Pythonis muutuja nime valimisel on omad reeglid ja tavad nagu ka 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 olla küll. 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
.
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 kui väärtuseks on 12
, siis on tegemist täisarvuga, kui 12.1
, siis ujukomaarvuga, kui "Kaua Sa kannatad kurbade naeru"
, siis sõnega.
Soovi korral saab lugeda erinevate nimevaliku soovituste kohta ingliskeelsest Wikipedia artiklist.
Järgmises videos ja sellele järgnevas tekstis tegeletakse sarnase näitega, soovitame valida endale sobiva või vajadusel mõlemaid uurida.
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 tuleks lisada käsk print
.
print(vanuste_summa)
Kokku saime järgneva programmikoodi:
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?
Muutujatega tegutsemisel tuleb meeles pidada, et muutuja peab enne selle kasutamist olema väärtustatud. Proovige käivitada juba varasemalt vaadeldud näidet sellisena:
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?
ARVULISTE VÄÄRTUSTE OMISTAMINE MUUTUJALE
Muutujale arvulise väärtuse omistamist juba vaatasime. Käib see siis näiteks nii:
lemmik_arv = 7 print(lemmik_arv)
Lisaks sellele on võimalik arvudega sooritada erinevaid tehteid. Vaadake tähelepanelikult, sest mõned märgid tähendavad teisi asju 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, võite nendega tutvuda Pythoni dokumentatsioonis.
Ülesanne
Järgmine näide on ujukomaarvude omistamisest kahele muutujale, nende summa arvutamisest ja ekraanile väljastamiseks:
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)
Ü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.
Proovige näiteks, kuidas töötab järgnev programm:
nimi1 = "Mihkel" nimi2 = "Mari" tervitus = "Tere, " + nimi1 + " ja " + nimi2 + "!" print(tervitus)
See on üks nendest näidetest, 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 tulemuseks8
). - 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 antud 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.
Ülesanne
TÕEVÄÄRTUSE OMISTAMINE MUUTUJALE
Kui arvud ja sõned on tuttavamana 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 ka 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.
< eelmine | 1. nädala sisukord | järgmine > |