{"id":222,"date":"2019-01-10T08:05:25","date_gmt":"2019-01-10T08:05:25","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/?post_type=chapter&#038;p=222"},"modified":"2019-08-28T09:51:54","modified_gmt":"2019-08-28T09:51:54","slug":"muutujad","status":"publish","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/chapter\/muutujad\/","title":{"raw":"Muutujad","rendered":"Muutujad"},"content":{"raw":"<p class=\"vspace\">Kui andmed juba m\u00e4lus on, siis loomulikult tahame neid ka kasutada. Konkreetsele m\u00e4lupiirkonnale, kus teatud v\u00e4\u00e4rtus on, saab anda eraldi nime. Sellist nimega m\u00e4lupiirkonda kutsutakse <strong>muutujaks<\/strong>. Muutujal on nimi ja muutujale v\u00e4\u00e4rtuse andmine k\u00e4ib Pythonis v\u00f5rdusm\u00e4rgi abil.<\/p>\r\n<p class=\"vspace\">Tinglikult v\u00f5ib muutujaid v\u00f5rrelda maitseainete topsidega. Selleks, et maitseaineid lihtsamini \u00fcles leida, on m\u00f5istlik topsid vastavalt sildistada. Sildi j\u00e4rgi leitakse vastav maitseaine paremini \u00fcles.<\/p>\r\nEelmise peat\u00fcki l\u00f5pus mainisime, et erinevat t\u00fc\u00fcpi v\u00e4\u00e4rtusi kujutatakse m\u00e4lus erinevalt. Laias laastus on seegi v\u00f5rreldav maitseainetopsidega - need v\u00f5ivad olla erineva suurusega.\r\n\r\n&nbsp;\r\n\r\n[caption id=\"attachment_223\" align=\"aligncenter\" width=\"300\"]<img class=\"size-medium wp-image-223\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/01\/IMG_6474-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" \/> Muutujaid v\u00f5ib v\u00f5rrelda maitseainete topsidega. Allikas: Eno T\u00f5nissoni erakogu[\/caption]\r\n<h2>Muutujale nime andmine<\/h2>\r\n<p class=\"vspace\">Pythonis muutuja nime valimisel on omad reeglid ja tavad nagu n\u00e4iteks tavaelus lapsele nime panemisel. (Reeglid ise on k\u00fcll lapsele nimepanemise omadest m\u00f5nev\u00f5rra erinevad.) Pythonis muutujale nime panemisel tuleb silmas pidada, et nimi ei tohi sisaldada t\u00fchikuid. T\u00fchiku asemel kasutatakse vajadusel alakriipsu (nt <code>vanima_lapse_vanus<\/code>) v\u00f5i j\u00e4etakse vahe \u00fcldse \u00e4ra (nt <code>vanimaLapseVanus<\/code>). Lisaks on tavaks, et muutuja nimi on kirjutatud v\u00e4ikeste t\u00e4htedega (va s\u00f5nade algust\u00e4hed alates teisest). Nimi ei tohi alata numbriga, aga alates teisest s\u00fcmbolist v\u00f5ib numbreid nimes olla. Nimedena ei saa kasutada m\u00f5ningaid Pythonis erit\u00e4hendusega s\u00f5nu, n\u00e4iteks <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">and<\/code>, <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">def<\/code><\/code>, <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">elif<\/code><\/code>, <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">else<\/code>, <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">for<\/code><\/code>, <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">from<\/code><\/code>, <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">if<\/code><\/code>, <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">import<\/code>, <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">in<\/code><\/code>, <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">not<\/code><\/code>, <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">or<\/code><\/code>, <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">pass<\/code><\/code>, <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">return<\/code>, <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">while<\/code><\/code> ja t\u00f5ev\u00e4\u00e4rtusi <code>True<\/code> ja <code>False<\/code>.<\/p>\r\n<p class=\"vspace\">Soovi korral saab lugeda erinevate nimevaliku soovituste kohta <a class=\"urllink\" href=\"http:\/\/en.wikipedia.org\/wiki\/Naming_convention_%28programming%29\" target=\"_blank\" rel=\"noopener noreferrer\">ingliskeelsest Wikipedia artiklist<\/a>.<\/p>\r\n\r\n<h2>Muutujale v\u00e4\u00e4rtuse andmine<\/h2>\r\nMuutuja on kasulik siis, kui talle anda mingi v\u00e4\u00e4rtus - m\u00e4\u00e4ratakse andmed, mida muutujale vastavas m\u00e4lupiirkonnas hoitakse. Umbes nii, et topsis, mille peale on kirjutatud kaneel, on hoiul kaneel.\r\n\r\nErinevalt mitmetest teistest programmeerimiskeeltest (nt Java) ei m\u00e4\u00e4rata Pythonis programmeerija poolt ilmutatult, mis t\u00fc\u00fcpi v\u00e4\u00e4rtused antud muutujale sobivad ehk mis t\u00fc\u00fcpi muutuja on. Python saab ise aru, et v\u00e4\u00e4rtus <code>12<\/code> on t\u00e4isarv, v\u00e4\u00e4rtus <code>12.1<\/code> on ujukomaarv ning v\u00e4\u00e4rtus <code>\"Kaua Sa kannatad kurbade naeru\"<\/code> on s\u00f5ne. See-eest tuleb ise t\u00e4hele panna, et muutujatele \u00f5iget t\u00fc\u00fcpi v\u00e4\u00e4rtused ette antakse.\r\n<h2 class=\"vspace\">Programm (vanuste summa)<\/h2>\r\nVaatame n\u00fc\u00fcd n\u00e4idet, kus v\u00e4\u00e4rtustame erinevaid muutujaid. Anname muutujale <code>poisi_vanus<\/code> v\u00e4\u00e4rtuseks <code>12<\/code>. Selleks k\u00e4ivitame Thonny ning tr\u00fckime uude programmiaknasse (<em>File<\/em> -&gt; <em>New<\/em>) esimesele reale:\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">poisi_vanus = 12<\/pre>\r\n<p class=\"vspace\">Toome m\u00e4ngu vanaema, andes teisel real muutujale <code>vanaema_vanus<\/code> v\u00e4\u00e4rtuseks <code>59<\/code>:<\/p>\r\n\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">vanaema_vanus = 59<\/pre>\r\nTalletatud infot saame kasutada samade muutujate abil. V\u00f5ime n\u00e4iteks leida poisi ja vanaema vanuste summa, tr\u00fckkides programmi kolmandale reale:\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">vanuste_summa = poisi_vanus + vanaema_vanus<\/pre>\r\n<p class=\"vspace\">Ekraanile v\u00e4ljastamiseks tuleb lisada k\u00e4sk <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">print<\/code>:<\/code><\/p>\r\n\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">print(vanuste_summa)<\/pre>\r\n<p class=\"vspace\">Kokku saame j\u00e4rgneva programmikoodi:<\/p>\r\n<strong>N\u00e4iteprogramm. Vanuste summa<\/strong>\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">poisi_vanus = 12\r\nvanaema_vanus = 59\r\nvanuste_summa = poisi_vanus + vanaema_vanus\r\nprint(vanuste_summa)<\/pre>\r\n<p class=\"vspace\">Programmi k\u00e4ivitades (<em>Run<\/em> -&gt; <em>Run current script<\/em>) peaks tulemus olema selline:<\/p>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<img class=\"size-full wp-image-224 aligncenter\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/01\/vanused.png\" alt=\"\" width=\"596\" height=\"513\" \/>\r\n<p class=\"vspace\"><strong>Nuputa!<\/strong> Kuidas leida poisi ja vanaema keskmine vanus?<\/p>\r\n\r\n<h3>Video<\/h3>\r\nVaata ka <a href=\"https:\/\/youtu.be\/Vz8EfZRSMB0\" target=\"_blank\" rel=\"noopener noreferrer\">videot<\/a>, kus lahendatakse poisi ja vanaema \u00fclesandele k\u00fcllaltki sarnane \u00fclesanne. Videos n\u00e4idatakse muuhulgas, kuidas Thonnys saab jooksvalt muutujate v\u00e4\u00e4rtusi vaadata ja programmi samm-sammult l\u00e4bida.\r\n<h2>Muutuja kasutamise j\u00e4rjekord<\/h2>\r\n<p class=\"vspace\">Muutujatega tegutsemisel tuleb meeles pidada, et muutuja peab enne selle kasutamist olema v\u00e4\u00e4rtustatud. Proovi k\u00e4ivitada j\u00e4rgmist n\u00e4idet:<\/p>\r\n\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">poisi_vanus = 12\r\nvanuste_summa = poisi_vanus + vanaema_vanus\r\nvanaema_vanus = 59\r\nprint(vanuste_summa)<\/pre>\r\n<p class=\"vspace\">Millise teate v\u00e4ljastas Python? Miks selline veateade ilmnes ja kuidas viga parandada saab?<\/p>\r\n\r\n<h2>Tehted arvudega<\/h2>\r\n<p class=\"vspace\">Muutujale arvulise v\u00e4\u00e4rtuse omistamist me juba vaatasime. See k\u00e4ib n\u00e4iteks nii:<\/p>\r\n\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">lemmik_arv = 7\r\nprint(lemmik_arv)<\/pre>\r\n<p class=\"vspace\">Lisaks sellele on v\u00f5imalik arvudega sooritada erinevaid tehteid. Vaata t\u00e4helepanelikult, sest m\u00f5ned m\u00e4rgid on teistsuguse t\u00e4hendusega, kui me harjunud oleme:<\/p>\r\n\r\n<ul>\r\n \t<li><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">+<\/code> liitmine<\/li>\r\n \t<li><code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">-<\/code><\/code> lahutamine<\/li>\r\n \t<li><code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\/<\/code><\/code> jagamine<\/li>\r\n \t<li><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">*<\/code> korrutamine<\/li>\r\n \t<li><code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">**<\/code><\/code> astendamine<\/li>\r\n \t<li><code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">%<\/code><\/code> j\u00e4\u00e4gi leidmine<\/li>\r\n \t<li><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\/\/<\/code> t\u00e4isosa leidmine<\/li>\r\n<\/ul>\r\n<p class=\"vspace\">Lisaks tehtem\u00e4rkidele on olulisel kohal erinevad funktsioonid, nii saame n\u00e4iteks funktsiooniga <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">max<\/code><\/code> leida mitmest suurusest suurima. N\u00e4iteks <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">max(23, 56)<\/code> v\u00e4\u00e4rtus on <code>56<\/code>.<\/p>\r\n<p class=\"vspace\">V\u00f5imalusi on veel hulga rohkem, nendega saab tutvuda <a class=\"urllink\" href=\"https:\/\/docs.python.org\/3\/library\/stdtypes.html\" target=\"_blank\" rel=\"noopener noreferrer\">Pythoni dokumentatsioonis<\/a>.<\/p>\r\n\r\n<h3>Enesekontroll (1 \u00fclesanne)<\/h3>\r\n<code>[h5p id=\"33\"]<\/code>\r\n<h2>Ujukomaarvu omistamine<\/h2>\r\nJ\u00e4rgmises n\u00e4ites on toodud ujukomaarvude omistamine kahele muutujale, nende summa arvutamine ja ekraanile v\u00e4ljastamine:\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">esimene_arv = 3.2\r\nteine_arv = 10.15\r\narvude_summa = esimene_arv + teine_arv\r\nprint(arvude_summa)<\/pre>\r\n<p class=\"vspace\">Muutuja v\u00e4\u00e4rtust saab programmis ka muuta. Proovige j\u00e4rgi, mis tulemus tuleb sellisel juhul:<\/p>\r\n\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">esimene_arv = 3.2\r\nteine_arv = 10.15\r\n \r\nesimene_arv = 5\r\n \r\narvude_summa = esimene_arv + teine_arv\r\nprint(arvude_summa)<\/pre>\r\n<h3>Enesekontroll (1 \u00fclesanne)<\/h3>\r\n<code>[h5p id=\"34\"]<\/code>\r\n<h2>Tekstilise v\u00e4\u00e4rtuse andmine muutujale. S\u00f5ne<\/h2>\r\n<p class=\"vspace\">Eelmistes n\u00e4idetes andsime muutujale v\u00e4\u00e4rtuseks arvu (t\u00e4isarvu v\u00f5i ujukomaarvu). N\u00fc\u00fcd vaatame, kuidas muutujale anda v\u00e4\u00e4rtuseks tekst s\u00f5nena. Tekstiline v\u00e4\u00e4rtus omistatakse muutujale jutum\u00e4rkide (v\u00f5i \u00fclakomade) vahel. Mitu teksti saame kokku panna, kasutades <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">+<\/code><\/code> m\u00e4rke.<\/p>\r\n<p class=\"vspace\">Proovi n\u00e4iteks, kuidas t\u00f6\u00f6tab j\u00e4rgnev programm:<\/p>\r\n<strong>N\u00e4iteprogramm. S\u00f5nede liitmine<\/strong>\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">nimi1 = \"Mihkel\"\r\nnimi2 = \"Mari\"\r\ntervitus = \"Tere, \" + nimi1 + \" ja \" + nimi2 + \"!\"\r\nprint(tervitus)<\/pre>\r\n<p class=\"vspace\">Selle programmiga n\u00e4eme olukorda, kus \u00fcks ja sama tehtem\u00e4rk t\u00e4hendab erinevate andmet\u00fc\u00fcpide puhul erinevaid asju:<\/p>\r\n\r\n<ul>\r\n \t<li>Arvude puhul t\u00e4hendab <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">+<\/code><\/code> m\u00e4rk kahe arvu liitmist (<code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">5 + 3<\/code><\/code> annab tulemuseks <code>8<\/code>).<\/li>\r\n \t<li>S\u00f5nede puhul t\u00e4hendab <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">+<\/code><\/code> m\u00e4rk kahe s\u00f5ne \u00fchendamist \u00fcheks s\u00f5neks (<code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\"tere\" + \"tore\"<\/code> annab tulemuseks <code>\"teretore\"<\/code>.) Sel tehtel on ka peenem nimi - <em>konkatenatsioon<\/em>.<\/li>\r\n<\/ul>\r\n<p class=\"vspace\">Nagu eelmisest programmin\u00e4itest n\u00e4ha, siis s\u00f5ned kirjutatakse jutum\u00e4rkidega, muutujanimed aga ilma.<\/p>\r\n<p class=\"vspace\"><strong>NB!<\/strong> Sellisel viisil saab omavahel \u00fchendada <strong>ainult<\/strong> s\u00f5nesid. Arvu lisamiseks sellesse lausesse peaks kasutama funktsiooni <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">str<\/code><\/code>, et arv esmalt s\u00f5neks teisendada. N\u00e4iteks kui muutuja <code>arv<\/code> sisaldaks v\u00e4\u00e4rtust <code>5<\/code>, siis <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">str(arv)<\/code><\/code> annaks v\u00e4\u00e4rtuse <code>\"5\"<\/code> (s\u00f5nena), mida saaks juba teiste s\u00f5nedega liita.<\/p>\r\n\r\n<h3>Enesekontroll (1 \u00fclesanne)<\/h3>\r\n<code>[h5p id=\"35\"]<\/code>\r\n<h2>T\u00f5ev\u00e4\u00e4rtuse omistamine muutujale<\/h2>\r\nKui arvud ja s\u00f5ned on tuttavana tunduvad andmet\u00fc\u00fcbid (oleme ju arvude ja tekstiga ikka tegutsenud), siis t\u00f5ev\u00e4\u00e4rtused on v\u00f5ib-olla m\u00f5nev\u00f5rra v\u00f5\u00f5ramad. Nimelt saab muutujale v\u00e4\u00e4rtuseks anda v\u00e4\u00e4rtusi <code>True<\/code> (t\u00f5ene) v\u00f5i <code>False<\/code> (v\u00e4\u00e4r):\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">liigaasta = False\r\nprint(liigaasta)<\/pre>\r\nT\u00f5ev\u00e4\u00e4rtuste t\u00fc\u00fcpi nimetatakse algebralise loogika looja <a class=\"urllink\" href=\"http:\/\/en.wikipedia.org\/wiki\/George_Boole\" target=\"_blank\" rel=\"noopener noreferrer\">George Boole<\/a>'i j\u00e4rgi inglise keeles <em>boolean<\/em> t\u00fc\u00fcbiks. Kohata v\u00f5ib ka s\u00f5na <em>boolean<\/em> l\u00fchendatud varianti <em>bool<\/em>. P\u00f5hjalikumalt vaatame t\u00f5ev\u00e4\u00e4rtuste rakendusi tingimuslausete peat\u00fcki juures.","rendered":"<p class=\"vspace\">Kui andmed juba m\u00e4lus on, siis loomulikult tahame neid ka kasutada. Konkreetsele m\u00e4lupiirkonnale, kus teatud v\u00e4\u00e4rtus on, saab anda eraldi nime. Sellist nimega m\u00e4lupiirkonda kutsutakse <strong>muutujaks<\/strong>. Muutujal on nimi ja muutujale v\u00e4\u00e4rtuse andmine k\u00e4ib Pythonis v\u00f5rdusm\u00e4rgi abil.<\/p>\n<p class=\"vspace\">Tinglikult v\u00f5ib muutujaid v\u00f5rrelda maitseainete topsidega. Selleks, et maitseaineid lihtsamini \u00fcles leida, on m\u00f5istlik topsid vastavalt sildistada. Sildi j\u00e4rgi leitakse vastav maitseaine paremini \u00fcles.<\/p>\n<p>Eelmise peat\u00fcki l\u00f5pus mainisime, et erinevat t\u00fc\u00fcpi v\u00e4\u00e4rtusi kujutatakse m\u00e4lus erinevalt. Laias laastus on seegi v\u00f5rreldav maitseainetopsidega &#8211; need v\u00f5ivad olla erineva suurusega.<\/p>\n<p>&nbsp;<\/p>\n<figure id=\"attachment_223\" aria-describedby=\"caption-attachment-223\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-223\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/01\/IMG_6474-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/01\/IMG_6474-300x225.jpg 300w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/01\/IMG_6474-768x576.jpg 768w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/01\/IMG_6474-1024x768.jpg 1024w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/01\/IMG_6474-65x49.jpg 65w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/01\/IMG_6474-225x169.jpg 225w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/01\/IMG_6474-350x263.jpg 350w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/01\/IMG_6474.jpg 1600w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><figcaption id=\"caption-attachment-223\" class=\"wp-caption-text\">Muutujaid v\u00f5ib v\u00f5rrelda maitseainete topsidega. Allikas: Eno T\u00f5nissoni erakogu<\/figcaption><\/figure>\n<h2>Muutujale nime andmine<\/h2>\n<p class=\"vspace\">Pythonis muutuja nime valimisel on omad reeglid ja tavad nagu n\u00e4iteks tavaelus lapsele nime panemisel. (Reeglid ise on k\u00fcll lapsele nimepanemise omadest m\u00f5nev\u00f5rra erinevad.) Pythonis muutujale nime panemisel tuleb silmas pidada, et nimi ei tohi sisaldada t\u00fchikuid. T\u00fchiku asemel kasutatakse vajadusel alakriipsu (nt <code>vanima_lapse_vanus<\/code>) v\u00f5i j\u00e4etakse vahe \u00fcldse \u00e4ra (nt <code>vanimaLapseVanus<\/code>). Lisaks on tavaks, et muutuja nimi on kirjutatud v\u00e4ikeste t\u00e4htedega (va s\u00f5nade algust\u00e4hed alates teisest). Nimi ei tohi alata numbriga, aga alates teisest s\u00fcmbolist v\u00f5ib numbreid nimes olla. Nimedena ei saa kasutada m\u00f5ningaid Pythonis erit\u00e4hendusega s\u00f5nu, n\u00e4iteks <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">and<\/code>, <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">def<\/code><\/code>, <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">elif<\/code><\/code>, <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">else<\/code>, <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">for<\/code><\/code>, <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">from<\/code><\/code>, <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">if<\/code><\/code>, <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">import<\/code>, <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">in<\/code><\/code>, <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">not<\/code><\/code>, <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">or<\/code><\/code>, <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">pass<\/code><\/code>, <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">return<\/code>, <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">while<\/code><\/code> ja t\u00f5ev\u00e4\u00e4rtusi <code>True<\/code> ja <code>False<\/code>.<\/p>\n<p class=\"vspace\">Soovi korral saab lugeda erinevate nimevaliku soovituste kohta <a class=\"urllink\" href=\"http:\/\/en.wikipedia.org\/wiki\/Naming_convention_%28programming%29\" target=\"_blank\" rel=\"noopener noreferrer\">ingliskeelsest Wikipedia artiklist<\/a>.<\/p>\n<h2>Muutujale v\u00e4\u00e4rtuse andmine<\/h2>\n<p>Muutuja on kasulik siis, kui talle anda mingi v\u00e4\u00e4rtus &#8211; m\u00e4\u00e4ratakse andmed, mida muutujale vastavas m\u00e4lupiirkonnas hoitakse. Umbes nii, et topsis, mille peale on kirjutatud kaneel, on hoiul kaneel.<\/p>\n<p>Erinevalt mitmetest teistest programmeerimiskeeltest (nt Java) ei m\u00e4\u00e4rata Pythonis programmeerija poolt ilmutatult, mis t\u00fc\u00fcpi v\u00e4\u00e4rtused antud muutujale sobivad ehk mis t\u00fc\u00fcpi muutuja on. Python saab ise aru, et v\u00e4\u00e4rtus <code>12<\/code> on t\u00e4isarv, v\u00e4\u00e4rtus <code>12.1<\/code> on ujukomaarv ning v\u00e4\u00e4rtus <code>\"Kaua Sa kannatad kurbade naeru\"<\/code> on s\u00f5ne. See-eest tuleb ise t\u00e4hele panna, et muutujatele \u00f5iget t\u00fc\u00fcpi v\u00e4\u00e4rtused ette antakse.<\/p>\n<h2 class=\"vspace\">Programm (vanuste summa)<\/h2>\n<p>Vaatame n\u00fc\u00fcd n\u00e4idet, kus v\u00e4\u00e4rtustame erinevaid muutujaid. Anname muutujale <code>poisi_vanus<\/code> v\u00e4\u00e4rtuseks <code>12<\/code>. Selleks k\u00e4ivitame Thonny ning tr\u00fckime uude programmiaknasse (<em>File<\/em> -&gt; <em>New<\/em>) esimesele reale:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">poisi_vanus = 12<\/pre>\n<p class=\"vspace\">Toome m\u00e4ngu vanaema, andes teisel real muutujale <code>vanaema_vanus<\/code> v\u00e4\u00e4rtuseks <code>59<\/code>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">vanaema_vanus = 59<\/pre>\n<p>Talletatud infot saame kasutada samade muutujate abil. V\u00f5ime n\u00e4iteks leida poisi ja vanaema vanuste summa, tr\u00fckkides programmi kolmandale reale:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">vanuste_summa = poisi_vanus + vanaema_vanus<\/pre>\n<p class=\"vspace\">Ekraanile v\u00e4ljastamiseks tuleb lisada k\u00e4sk <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">print<\/code>:<\/code><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">print(vanuste_summa)<\/pre>\n<p class=\"vspace\">Kokku saame j\u00e4rgneva programmikoodi:<\/p>\n<p><strong>N\u00e4iteprogramm. Vanuste summa<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">poisi_vanus = 12\r\nvanaema_vanus = 59\r\nvanuste_summa = poisi_vanus + vanaema_vanus\r\nprint(vanuste_summa)<\/pre>\n<p class=\"vspace\">Programmi k\u00e4ivitades (<em>Run<\/em> -&gt; <em>Run current script<\/em>) peaks tulemus olema selline:<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-224 aligncenter\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/01\/vanused.png\" alt=\"\" width=\"596\" height=\"513\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/01\/vanused.png 596w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/01\/vanused-300x258.png 300w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/01\/vanused-65x56.png 65w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/01\/vanused-225x194.png 225w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/01\/vanused-350x301.png 350w\" sizes=\"auto, (max-width: 596px) 100vw, 596px\" \/><\/p>\n<p class=\"vspace\"><strong>Nuputa!<\/strong> Kuidas leida poisi ja vanaema keskmine vanus?<\/p>\n<h3>Video<\/h3>\n<p>Vaata ka <a href=\"https:\/\/youtu.be\/Vz8EfZRSMB0\" target=\"_blank\" rel=\"noopener noreferrer\">videot<\/a>, kus lahendatakse poisi ja vanaema \u00fclesandele k\u00fcllaltki sarnane \u00fclesanne. Videos n\u00e4idatakse muuhulgas, kuidas Thonnys saab jooksvalt muutujate v\u00e4\u00e4rtusi vaadata ja programmi samm-sammult l\u00e4bida.<\/p>\n<h2>Muutuja kasutamise j\u00e4rjekord<\/h2>\n<p class=\"vspace\">Muutujatega tegutsemisel tuleb meeles pidada, et muutuja peab enne selle kasutamist olema v\u00e4\u00e4rtustatud. Proovi k\u00e4ivitada j\u00e4rgmist n\u00e4idet:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">poisi_vanus = 12\r\nvanuste_summa = poisi_vanus + vanaema_vanus\r\nvanaema_vanus = 59\r\nprint(vanuste_summa)<\/pre>\n<p class=\"vspace\">Millise teate v\u00e4ljastas Python? Miks selline veateade ilmnes ja kuidas viga parandada saab?<\/p>\n<h2>Tehted arvudega<\/h2>\n<p class=\"vspace\">Muutujale arvulise v\u00e4\u00e4rtuse omistamist me juba vaatasime. See k\u00e4ib n\u00e4iteks nii:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">lemmik_arv = 7\r\nprint(lemmik_arv)<\/pre>\n<p class=\"vspace\">Lisaks sellele on v\u00f5imalik arvudega sooritada erinevaid tehteid. Vaata t\u00e4helepanelikult, sest m\u00f5ned m\u00e4rgid on teistsuguse t\u00e4hendusega, kui me harjunud oleme:<\/p>\n<ul>\n<li><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">+<\/code> liitmine<\/li>\n<li><code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">-<\/code><\/code> lahutamine<\/li>\n<li><code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\/<\/code><\/code> jagamine<\/li>\n<li><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">*<\/code> korrutamine<\/li>\n<li><code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">**<\/code><\/code> astendamine<\/li>\n<li><code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">%<\/code><\/code> j\u00e4\u00e4gi leidmine<\/li>\n<li><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\/\/<\/code> t\u00e4isosa leidmine<\/li>\n<\/ul>\n<p class=\"vspace\">Lisaks tehtem\u00e4rkidele on olulisel kohal erinevad funktsioonid, nii saame n\u00e4iteks funktsiooniga <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">max<\/code><\/code> leida mitmest suurusest suurima. N\u00e4iteks <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">max(23, 56)<\/code> v\u00e4\u00e4rtus on <code>56<\/code>.<\/p>\n<p class=\"vspace\">V\u00f5imalusi on veel hulga rohkem, nendega saab tutvuda <a class=\"urllink\" href=\"https:\/\/docs.python.org\/3\/library\/stdtypes.html\" target=\"_blank\" rel=\"noopener noreferrer\">Pythoni dokumentatsioonis<\/a>.<\/p>\n<h3>Enesekontroll (1 \u00fclesanne)<\/h3>\n<p><code><\/p>\n<div id=\"h5p-33\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-33\" class=\"h5p-iframe\" data-content-id=\"33\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"Sissejuhatus-4-arvruutu\"><\/iframe><\/div>\n<\/div>\n<p><\/code><\/p>\n<h2>Ujukomaarvu omistamine<\/h2>\n<p>J\u00e4rgmises n\u00e4ites on toodud ujukomaarvude omistamine kahele muutujale, nende summa arvutamine ja ekraanile v\u00e4ljastamine:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">esimene_arv = 3.2\r\nteine_arv = 10.15\r\narvude_summa = esimene_arv + teine_arv\r\nprint(arvude_summa)<\/pre>\n<p class=\"vspace\">Muutuja v\u00e4\u00e4rtust saab programmis ka muuta. Proovige j\u00e4rgi, mis tulemus tuleb sellisel juhul:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">esimene_arv = 3.2\r\nteine_arv = 10.15\r\n \r\nesimene_arv = 5\r\n \r\narvude_summa = esimene_arv + teine_arv\r\nprint(arvude_summa)<\/pre>\n<h3>Enesekontroll (1 \u00fclesanne)<\/h3>\n<p><code><\/p>\n<div id=\"h5p-34\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-34\" class=\"h5p-iframe\" data-content-id=\"34\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"Sissejuhatus-4-muutujamuutmine\"><\/iframe><\/div>\n<\/div>\n<p><\/code><\/p>\n<h2>Tekstilise v\u00e4\u00e4rtuse andmine muutujale. S\u00f5ne<\/h2>\n<p class=\"vspace\">Eelmistes n\u00e4idetes andsime muutujale v\u00e4\u00e4rtuseks arvu (t\u00e4isarvu v\u00f5i ujukomaarvu). N\u00fc\u00fcd vaatame, kuidas muutujale anda v\u00e4\u00e4rtuseks tekst s\u00f5nena. Tekstiline v\u00e4\u00e4rtus omistatakse muutujale jutum\u00e4rkide (v\u00f5i \u00fclakomade) vahel. Mitu teksti saame kokku panna, kasutades <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">+<\/code><\/code> m\u00e4rke.<\/p>\n<p class=\"vspace\">Proovi n\u00e4iteks, kuidas t\u00f6\u00f6tab j\u00e4rgnev programm:<\/p>\n<p><strong>N\u00e4iteprogramm. S\u00f5nede liitmine<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">nimi1 = \"Mihkel\"\r\nnimi2 = \"Mari\"\r\ntervitus = \"Tere, \" + nimi1 + \" ja \" + nimi2 + \"!\"\r\nprint(tervitus)<\/pre>\n<p class=\"vspace\">Selle programmiga n\u00e4eme olukorda, kus \u00fcks ja sama tehtem\u00e4rk t\u00e4hendab erinevate andmet\u00fc\u00fcpide puhul erinevaid asju:<\/p>\n<ul>\n<li>Arvude puhul t\u00e4hendab <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">+<\/code><\/code> m\u00e4rk kahe arvu liitmist (<code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">5 + 3<\/code><\/code> annab tulemuseks <code>8<\/code>).<\/li>\n<li>S\u00f5nede puhul t\u00e4hendab <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">+<\/code><\/code> m\u00e4rk kahe s\u00f5ne \u00fchendamist \u00fcheks s\u00f5neks (<code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\"tere\" + \"tore\"<\/code> annab tulemuseks <code>\"teretore\"<\/code>.) Sel tehtel on ka peenem nimi &#8211; <em>konkatenatsioon<\/em>.<\/li>\n<\/ul>\n<p class=\"vspace\">Nagu eelmisest programmin\u00e4itest n\u00e4ha, siis s\u00f5ned kirjutatakse jutum\u00e4rkidega, muutujanimed aga ilma.<\/p>\n<p class=\"vspace\"><strong>NB!<\/strong> Sellisel viisil saab omavahel \u00fchendada <strong>ainult<\/strong> s\u00f5nesid. Arvu lisamiseks sellesse lausesse peaks kasutama funktsiooni <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">str<\/code><\/code>, et arv esmalt s\u00f5neks teisendada. N\u00e4iteks kui muutuja <code>arv<\/code> sisaldaks v\u00e4\u00e4rtust <code>5<\/code>, siis <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">str(arv)<\/code><\/code> annaks v\u00e4\u00e4rtuse <code>\"5\"<\/code> (s\u00f5nena), mida saaks juba teiste s\u00f5nedega liita.<\/p>\n<h3>Enesekontroll (1 \u00fclesanne)<\/h3>\n<p><code><\/p>\n<div id=\"h5p-35\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-35\" class=\"h5p-iframe\" data-content-id=\"35\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"Sissejuhatus-4-summav\u00e4ljastamine\"><\/iframe><\/div>\n<\/div>\n<p><\/code><\/p>\n<h2>T\u00f5ev\u00e4\u00e4rtuse omistamine muutujale<\/h2>\n<p>Kui arvud ja s\u00f5ned on tuttavana tunduvad andmet\u00fc\u00fcbid (oleme ju arvude ja tekstiga ikka tegutsenud), siis t\u00f5ev\u00e4\u00e4rtused on v\u00f5ib-olla m\u00f5nev\u00f5rra v\u00f5\u00f5ramad. Nimelt saab muutujale v\u00e4\u00e4rtuseks anda v\u00e4\u00e4rtusi <code>True<\/code> (t\u00f5ene) v\u00f5i <code>False<\/code> (v\u00e4\u00e4r):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">liigaasta = False\r\nprint(liigaasta)<\/pre>\n<p>T\u00f5ev\u00e4\u00e4rtuste t\u00fc\u00fcpi nimetatakse algebralise loogika looja <a class=\"urllink\" href=\"http:\/\/en.wikipedia.org\/wiki\/George_Boole\" target=\"_blank\" rel=\"noopener noreferrer\">George Boole<\/a>&#8217;i j\u00e4rgi inglise keeles <em>boolean<\/em> t\u00fc\u00fcbiks. Kohata v\u00f5ib ka s\u00f5na <em>boolean<\/em> l\u00fchendatud varianti <em>bool<\/em>. P\u00f5hjalikumalt vaatame t\u00f5ev\u00e4\u00e4rtuste rakendusi tingimuslausete peat\u00fcki juures.<\/p>\n","protected":false},"author":12,"menu_order":4,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-222","chapter","type-chapter","status-publish","hentry"],"part":208,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/222","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/users\/12"}],"version-history":[{"count":10,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/222\/revisions"}],"predecessor-version":[{"id":467,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/222\/revisions\/467"}],"part":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/parts\/208"}],"metadata":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/222\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/media?parent=222"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapter-type?post=222"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/contributor?post=222"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/license?post=222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}