{"id":229,"date":"2019-01-10T08:58:05","date_gmt":"2019-01-10T08:58:05","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/?post_type=chapter&#038;p=229"},"modified":"2025-12-12T11:44:30","modified_gmt":"2025-12-12T11:44:30","slug":"sisend-kasutajalt-input","status":"publish","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/chapter\/sisend-kasutajalt-input\/","title":{"raw":"Sisend kasutajalt: input()","rendered":"Sisend kasutajalt: input()"},"content":{"raw":"<p class=\"vspace\">Eelnevates n\u00e4idetes kirjutasime andmed programmiteksti sisse. Sageli on meil vaja andmeid programmi t\u00f6\u00f6 v\u00e4ltel juurde saada.\u00a0Failides (sh internetis) olevatele andmetele juurdep\u00e4\u00e4sust r\u00e4\u00e4gime hilisemates peat\u00fckkides. Praegu vaatame, kuidas programm saaks kasutajalt andmeid k\u00fcsida ja neid kasutada. Programmi poolt vaadates on kasutajalt saadavad andmed <strong>sisend<\/strong>. Vastava funktsiooni nimi <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">input<\/code> t\u00f5lkes sisendit t\u00e4hendabki.<\/p>\r\nAlustame programmist, mis k\u00fcsib kasutajalt nime ja siis tervitab teda nimepidi. Nagu tavaliselt, saab siingi programmi mitmel viisil koostada. Alustame sellest variandist, kus k\u00f5igepealt v\u00e4ljastatakse ekraanile k\u00fcsimus, siis v\u00e4\u00e4rtustatakse muutuja kasutajalt saadud vastusega ning l\u00f5puks v\u00e4ljastatakse tervitus:\r\n\r\n<strong>N\u00e4iteprogramm. Sisendiga tervitus<\/strong>\r\n<pre class=\"EnlighterJSRAW\">print(\"Palun sisestage nimi\")\r\nnimi = input()\r\nprint(\"Tere, \" + nimi + \"!\")<\/pre>\r\n<p class=\"vspace\">Programmi Thonnys k\u00e4ivitades ilmub k\u00fcsimus Thonny allosas asuvale <em>Shell<\/em>-paneelile ja sinna tuleb ka vastus kirjutada. Klaviatuuri reavahetusklahviga (<em>Enter<\/em>) sisestus kinnitatakse. Proovi programm k\u00e4ivitada!<\/p>\r\n<p class=\"vspace\">Programmis saab k\u00fcsimuse teksti esitada ka koos funktsiooniga <code>input<\/code>:<\/p>\r\n\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">nimi = input(\"Palun sisestage nimi\")\r\nprint(\"Tere, \" + nimi + \"!\")<\/pre>\r\nSee programm ei t\u00f6\u00f6ta siiski t\u00e4pselt samamoodi kui eelmine. N\u00fc\u00fcd oodatakse kasutaja vastust k\u00fcsimusega samal real. Selleks, et k\u00fcsimus ja vastus eralduksid, lisame k\u00fcsimuse teksti taha kooloni ja t\u00fchiku:\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">nimi = input(\"Palun sisestage nimi: \")\r\nprint(\"Tere, \" + nimi + \"!\")<\/pre>\r\nJuba varasemast teame, et Pythonis on erinevat t\u00fc\u00fcpi andmeid. Selgitame, mis t\u00fc\u00fcpi v\u00e4\u00e4rtuse saame funktsiooni <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">input<\/code><\/code> abil:\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">nimi = input(\"Palun sisestage nimi: \")\r\nprint(type(nimi))<\/pre>\r\n<p class=\"vspace\">N\u00e4eme, et tegemist on s\u00f5nega (<code>str<\/code>). T\u00e4nu sellele saime ka programmis selle plussm\u00e4rgi abil sujuvalt teiste s\u00f5nedega (nt \"Tere, \" ja \"!\") \u00fchendada. Paljudel juhtudel on meil vaja kasutajalt k\u00fcsida n\u00e4iteks hoopis arve.<\/p>\r\n<p class=\"vspace\">K\u00fcsime n\u00e4iteks kasutaja vanust. Muutujale paneme nimeks <code>vanus<\/code>:<\/p>\r\n\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">vanus = input(\"Palun sisestage oma vanus: \")\r\nprint(type(vanus))<\/pre>\r\n<p class=\"vspace\">Proovi programmi k\u00fcsimusele mingi arvuga vastata. N\u00e4eme endiselt, et tegemist on s\u00f5nega. Sellest, et muutuja nime vahetasime, ei muutunud tegelikult programm \u00fcldse. Muutujate nimede sisulisus on t\u00e4htis programmeerijale, Python tegelikult nime konkreetsest t\u00e4hendusest aru ei saa.<\/p>\r\n<p class=\"vspace\">Kuniks meil pole vaja teha arvulisi tehteid, v\u00f5ime vanust s\u00f5ne kujul hoida:<\/p>\r\n\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">vanus = input(\"Palun sisestage oma vanus: \")\r\nprint(\"Teie vanus on \" + vanus)<\/pre>\r\nN\u00e4iteks kui sisestame vastuseks 31, siis oleks tulemus sama, kui programmis oleks rida <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">vanus = \"31\"<\/code>. Tegelikult on meil olemas vahendid mingi v\u00e4\u00e4rtuse teise andmet\u00fc\u00fcbina kujutamiseks. N\u00e4iteks <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">str<\/code><\/code> s\u00f5nena kujutamiseks, <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">int<\/code><\/code> t\u00e4isarvuna kujutamiseks, <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">float<\/code><\/code> ujukomaarvuna kujutamiseks. Kui tahame sisestatut t\u00e4isarvuna k\u00e4sitleda, siis v\u00f5ime kirjutada <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">vanus = int(input(\"Palun sisestage oma vanus: \"))<\/code><\/code>. Sellisel juhul on vanus juba t\u00e4isarv ja sellega saame teha vastavaid tehteid:\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">vanus = int(input(\"Palun sisestage oma vanus: \"))\r\nvanus_viie_aasta_p\u00e4rast = vanus + 5\r\nprint(\"Teie vanus 5 aasta p\u00e4rast on \" + str(vanus_viie_aasta_p\u00e4rast))<\/pre>\r\n<p class=\"vspace\">Selles n\u00e4ites kasutame kaht t\u00fc\u00fcbiteisendust: <code>vanus<\/code> peab olema t\u00e4isarv, et saaks teha arvutusi, aga v\u00e4ljatr\u00fckkimiseks on vaja hoopis s\u00f5net.<\/p>\r\n<p class=\"vspace\">Kui selle programmi puhul sisestada midagi, mida <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">int<\/code><\/code> ei saa t\u00e4isarvuks teisendada, siis ilmub veateade. Selle kursuse materjalides eeldame reeglina, et kasutaja sisestab seda t\u00fc\u00fcpi asju, mida k\u00fcsitakse. P\u00e4riselt muidugi n\u00e4hakse suurt vaeva, et kasutaja (kas siis kogemata v\u00f5i meelega) ei saaks sisestada midagi sellist, mis pole oodatud ja v\u00f5ib-olla programmi katki teeb.<\/p>\r\n<p class=\"vspace\">J\u00e4rgmises programmis k\u00fcsitakse kasutajalt t\u00e4isarvud ja need liidetakse kokku:<\/p>\r\n\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">esimene_arv = int(input(\"Sisesta esimene liidetav t\u00e4isarv: \"))\r\nteine_arv = int(input(\"Sisesta teine liidetav t\u00e4isarv: \"))\r\narvude_summa = esimene_arv + teine_arv\r\nprint(arvude_summa)<\/pre>\r\n<p class=\"vspace\">Siin me v\u00e4ljastamisel s\u00f5neks teisendamist ei kasutanud, sest <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">print<\/code><\/code> tuleb \u00fcksiku arvu v\u00e4ljastamisega toime. Varasemates n\u00e4idetes oli <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">str<\/code> vajalik, sest arvu ja s\u00f5net ei saa lihtsalt kokku liita.<\/p>\r\n<p class=\"vspace\">Siin programmis k\u00fcsitakse kahte arvu. See, millises j\u00e4rjekorras neid sisestatakse, pole siin oluline. Kui kaks esimest rida \u00e4ra vahetada, siis tulemus j\u00e4\u00e4b samaks:<\/p>\r\n\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">teine_arv = int(input(\"Sisesta teine liidetav t\u00e4isarv: \"))\r\nesimene_arv = int(input(\"Sisesta esimene liidetav t\u00e4isarv: \"))\r\narvude_summa = esimene_arv + teine_arv\r\nprint(arvude_summa)<\/pre>\r\n<p class=\"vspace\">Tegelikult v\u00f5ime siin \u00e4ra vahetada ka muutujate nimed. See, mis kasutajalt k\u00fcsitakse esimese arvuna, on programmis hoopis muutujas <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">teine_arv<\/code> ja vastupidi.<\/p>\r\n\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">teine_arv\u00a0=\u00a0int(input(\"Sisesta\u00a0esimene\u00a0liidetav\u00a0t\u00e4isarv:\u00a0\"))\r\nesimene_arv = int(input(\"Sisesta teine liidetav t\u00e4isarv: \"))\r\narvude_summa = esimene_arv + teine_arv\r\nprint(arvude_summa)<\/pre>\r\n<p class=\"vspace\">\u00dcldiselt on muidugi m\u00f5istlik, et muutuja nimi oleks vastavuses sisuga.<\/p>\r\n<p class=\"vspace\">L\u00f5petuseks koostame programmi, mis k\u00fcsib kasutajalt t\u00e4isarvu ning seej\u00e4rel<\/p>\r\n\r\n<ul>\r\n \t<li>liidab talle temast suuruse poolest j\u00e4rgmise arvu;<\/li>\r\n \t<li>liidab tulemusele arvu 9;<\/li>\r\n \t<li>jagab tulemuse arvuga 2;<\/li>\r\n \t<li>lahutab tulemusest esialgse arvu.<\/li>\r\n<\/ul>\r\n<p class=\"vspace\">Eeltoodud tingimustele vastab j\u00e4rgmine programm:<\/p>\r\n\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">algne_arv = int(input(\"Sisestage t\u00e4isarv: \"))\r\nj\u00e4rgmine_arv = algne_arv + 1\r\ntulemus = algne_arv + j\u00e4rgmine_arv\r\ntulemus = tulemus + 9\r\ntulemus = tulemus \/ 2\r\ntulemus = tulemus - algne_arv\r\nprint(tulemus)<\/pre>\r\n<p class=\"vspace\">V\u00f5ib tunduda kummaline, et me saame muutujale anda v\u00e4\u00e4rtuse tehtega, milles kasutame sedasama muutujat ennast (nt <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">tulemus = tulemus + 9<\/code><\/code>). Tegelikult on see t\u00e4iesti lubatud ja sageli kasutatav. Nii saabki muutuja v\u00e4\u00e4rtust muuta.<\/p>\r\n<p class=\"vspace\">Proovi programmi erinevate arvudega! Milliseid tulemusi saad?<\/p>\r\n<p class=\"vspace\">Tulemus paistab olevat ujukomaarv. Mis hetkel see tekib? Thonnyga v\u00f5ime j\u00e4lgida muutujate v\u00e4\u00e4rtusi programmi jooksutamise ajal. Selleks tuleb muutujate paneel avada (<em>View<\/em> --&gt; <em>Variables<\/em>). Kui tavalisel moel programm k\u00e4ivitada (Run --&gt; Run current script v\u00f5i vastav rohelise ringiga nupp v\u00f5i klahv <em>F5<\/em>), siis tehakse programmi t\u00f6\u00f6 p\u00e4rast kasutajalt sisendi saamist \u00fche hooga \u00e4ra ja paistavad muutujate l\u00f5ppv\u00e4\u00e4rtused.<\/p>\r\n<p class=\"vspace\">Kui aga kasutada Thonny sammsammulise l\u00e4bimise v\u00f5imalusi, siis n\u00e4eme muutujate v\u00e4\u00e4rtuste muutumist ka samm-sammult. Selleks tuleb programm k\u00e4ivitada silumisre\u017eiimis (<em>Run<\/em> --&gt; <em>Debug current script<\/em> v\u00f5i putukaga nupp v\u00f5i <em>Ctrl + F5<\/em>). N\u00e4eme, et programmi esimene rida on esiletoodud. N\u00fc\u00fcd saame sammukaupa programmis edasi minna (<em>Run<\/em> --&gt; <em>Step over<\/em> v\u00f5i vastav noolega nupp v\u00f5i klahv <em>F6<\/em>).<\/p>\r\n<p class=\"vspace\">Katseta sammhaaval k\u00e4ivitamist! Millal saab muutuja <code>tulemus<\/code> v\u00e4\u00e4rtuseks ujukomaarvu?<\/p>\r\n<p class=\"vspace\">Proovige, mis muutub, kui jagamism\u00e4rgi <code>\/<\/code> asemel kasutada hoopis kahekordeset jagamism\u00e4rki <code>\/\/<\/code>, mis t\u00e4histab t\u00e4isarvulist jagamist. Kahe arvu jagamisel on tulemuseks alati t\u00e4isarv (v\u00f5i sellele vastav ujukomaarv). N\u00e4iteks <code>5 \/\/ 3<\/code> v\u00e4\u00e4rtuseks on <code>1<\/code>, tehte <code>5.1 \/\/ 3<\/code> v\u00e4\u00e4rtuseks aga <code>1.0<\/code>. Tuleb t\u00e4hele panna, et tulemuse saamiseks jagatist ei \u00fcmardata, vaid tulemuseks on k\u00f5ige suurem t\u00e4isarv, millest jagatis ei ole v\u00e4iksem.<\/p>\r\n\r\n<h3>Enesekontroll (1 k\u00fcsimus)<\/h3>\r\n<code>[h5p id=\"36\"]<\/code>\r\n<h2 class=\"vspace\">Video<\/h2>\r\nVaata ka l\u00e4bi teemat kokkuv\u00f5ttev video:\r\n\r\nhttps:\/\/www.youtube.com\/watch?v=KKAM-EGRRRA","rendered":"<p class=\"vspace\">Eelnevates n\u00e4idetes kirjutasime andmed programmiteksti sisse. Sageli on meil vaja andmeid programmi t\u00f6\u00f6 v\u00e4ltel juurde saada.\u00a0Failides (sh internetis) olevatele andmetele juurdep\u00e4\u00e4sust r\u00e4\u00e4gime hilisemates peat\u00fckkides. Praegu vaatame, kuidas programm saaks kasutajalt andmeid k\u00fcsida ja neid kasutada. Programmi poolt vaadates on kasutajalt saadavad andmed <strong>sisend<\/strong>. Vastava funktsiooni nimi <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">input<\/code> t\u00f5lkes sisendit t\u00e4hendabki.<\/p>\n<p>Alustame programmist, mis k\u00fcsib kasutajalt nime ja siis tervitab teda nimepidi. Nagu tavaliselt, saab siingi programmi mitmel viisil koostada. Alustame sellest variandist, kus k\u00f5igepealt v\u00e4ljastatakse ekraanile k\u00fcsimus, siis v\u00e4\u00e4rtustatakse muutuja kasutajalt saadud vastusega ning l\u00f5puks v\u00e4ljastatakse tervitus:<\/p>\n<p><strong>N\u00e4iteprogramm. Sisendiga tervitus<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">print(\"Palun sisestage nimi\")\r\nnimi = input()\r\nprint(\"Tere, \" + nimi + \"!\")<\/pre>\n<p class=\"vspace\">Programmi Thonnys k\u00e4ivitades ilmub k\u00fcsimus Thonny allosas asuvale <em>Shell<\/em>-paneelile ja sinna tuleb ka vastus kirjutada. Klaviatuuri reavahetusklahviga (<em>Enter<\/em>) sisestus kinnitatakse. Proovi programm k\u00e4ivitada!<\/p>\n<p class=\"vspace\">Programmis saab k\u00fcsimuse teksti esitada ka koos funktsiooniga <code>input<\/code>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">nimi = input(\"Palun sisestage nimi\")\r\nprint(\"Tere, \" + nimi + \"!\")<\/pre>\n<p>See programm ei t\u00f6\u00f6ta siiski t\u00e4pselt samamoodi kui eelmine. N\u00fc\u00fcd oodatakse kasutaja vastust k\u00fcsimusega samal real. Selleks, et k\u00fcsimus ja vastus eralduksid, lisame k\u00fcsimuse teksti taha kooloni ja t\u00fchiku:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">nimi = input(\"Palun sisestage nimi: \")\r\nprint(\"Tere, \" + nimi + \"!\")<\/pre>\n<p>Juba varasemast teame, et Pythonis on erinevat t\u00fc\u00fcpi andmeid. Selgitame, mis t\u00fc\u00fcpi v\u00e4\u00e4rtuse saame funktsiooni <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">input<\/code><\/code> abil:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">nimi = input(\"Palun sisestage nimi: \")\r\nprint(type(nimi))<\/pre>\n<p class=\"vspace\">N\u00e4eme, et tegemist on s\u00f5nega (<code>str<\/code>). T\u00e4nu sellele saime ka programmis selle plussm\u00e4rgi abil sujuvalt teiste s\u00f5nedega (nt &#8220;Tere, &#8221; ja &#8220;!&#8221;) \u00fchendada. Paljudel juhtudel on meil vaja kasutajalt k\u00fcsida n\u00e4iteks hoopis arve.<\/p>\n<p class=\"vspace\">K\u00fcsime n\u00e4iteks kasutaja vanust. Muutujale paneme nimeks <code>vanus<\/code>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">vanus = input(\"Palun sisestage oma vanus: \")\r\nprint(type(vanus))<\/pre>\n<p class=\"vspace\">Proovi programmi k\u00fcsimusele mingi arvuga vastata. N\u00e4eme endiselt, et tegemist on s\u00f5nega. Sellest, et muutuja nime vahetasime, ei muutunud tegelikult programm \u00fcldse. Muutujate nimede sisulisus on t\u00e4htis programmeerijale, Python tegelikult nime konkreetsest t\u00e4hendusest aru ei saa.<\/p>\n<p class=\"vspace\">Kuniks meil pole vaja teha arvulisi tehteid, v\u00f5ime vanust s\u00f5ne kujul hoida:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">vanus = input(\"Palun sisestage oma vanus: \")\r\nprint(\"Teie vanus on \" + vanus)<\/pre>\n<p>N\u00e4iteks kui sisestame vastuseks 31, siis oleks tulemus sama, kui programmis oleks rida <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">vanus = \"31\"<\/code>. Tegelikult on meil olemas vahendid mingi v\u00e4\u00e4rtuse teise andmet\u00fc\u00fcbina kujutamiseks. N\u00e4iteks <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">str<\/code><\/code> s\u00f5nena kujutamiseks, <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">int<\/code><\/code> t\u00e4isarvuna kujutamiseks, <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">float<\/code><\/code> ujukomaarvuna kujutamiseks. Kui tahame sisestatut t\u00e4isarvuna k\u00e4sitleda, siis v\u00f5ime kirjutada <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">vanus = int(input(\"Palun sisestage oma vanus: \"))<\/code><\/code>. Sellisel juhul on vanus juba t\u00e4isarv ja sellega saame teha vastavaid tehteid:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">vanus = int(input(\"Palun sisestage oma vanus: \"))\r\nvanus_viie_aasta_p\u00e4rast = vanus + 5\r\nprint(\"Teie vanus 5 aasta p\u00e4rast on \" + str(vanus_viie_aasta_p\u00e4rast))<\/pre>\n<p class=\"vspace\">Selles n\u00e4ites kasutame kaht t\u00fc\u00fcbiteisendust: <code>vanus<\/code> peab olema t\u00e4isarv, et saaks teha arvutusi, aga v\u00e4ljatr\u00fckkimiseks on vaja hoopis s\u00f5net.<\/p>\n<p class=\"vspace\">Kui selle programmi puhul sisestada midagi, mida <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">int<\/code><\/code> ei saa t\u00e4isarvuks teisendada, siis ilmub veateade. Selle kursuse materjalides eeldame reeglina, et kasutaja sisestab seda t\u00fc\u00fcpi asju, mida k\u00fcsitakse. P\u00e4riselt muidugi n\u00e4hakse suurt vaeva, et kasutaja (kas siis kogemata v\u00f5i meelega) ei saaks sisestada midagi sellist, mis pole oodatud ja v\u00f5ib-olla programmi katki teeb.<\/p>\n<p class=\"vspace\">J\u00e4rgmises programmis k\u00fcsitakse kasutajalt t\u00e4isarvud ja need liidetakse kokku:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">esimene_arv = int(input(\"Sisesta esimene liidetav t\u00e4isarv: \"))\r\nteine_arv = int(input(\"Sisesta teine liidetav t\u00e4isarv: \"))\r\narvude_summa = esimene_arv + teine_arv\r\nprint(arvude_summa)<\/pre>\n<p class=\"vspace\">Siin me v\u00e4ljastamisel s\u00f5neks teisendamist ei kasutanud, sest <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">print<\/code><\/code> tuleb \u00fcksiku arvu v\u00e4ljastamisega toime. Varasemates n\u00e4idetes oli <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">str<\/code> vajalik, sest arvu ja s\u00f5net ei saa lihtsalt kokku liita.<\/p>\n<p class=\"vspace\">Siin programmis k\u00fcsitakse kahte arvu. See, millises j\u00e4rjekorras neid sisestatakse, pole siin oluline. Kui kaks esimest rida \u00e4ra vahetada, siis tulemus j\u00e4\u00e4b samaks:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">teine_arv = int(input(\"Sisesta teine liidetav t\u00e4isarv: \"))\r\nesimene_arv = int(input(\"Sisesta esimene liidetav t\u00e4isarv: \"))\r\narvude_summa = esimene_arv + teine_arv\r\nprint(arvude_summa)<\/pre>\n<p class=\"vspace\">Tegelikult v\u00f5ime siin \u00e4ra vahetada ka muutujate nimed. See, mis kasutajalt k\u00fcsitakse esimese arvuna, on programmis hoopis muutujas <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">teine_arv<\/code> ja vastupidi.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">teine_arv\u00a0=\u00a0int(input(\"Sisesta\u00a0esimene\u00a0liidetav\u00a0t\u00e4isarv:\u00a0\"))\r\nesimene_arv = int(input(\"Sisesta teine liidetav t\u00e4isarv: \"))\r\narvude_summa = esimene_arv + teine_arv\r\nprint(arvude_summa)<\/pre>\n<p class=\"vspace\">\u00dcldiselt on muidugi m\u00f5istlik, et muutuja nimi oleks vastavuses sisuga.<\/p>\n<p class=\"vspace\">L\u00f5petuseks koostame programmi, mis k\u00fcsib kasutajalt t\u00e4isarvu ning seej\u00e4rel<\/p>\n<ul>\n<li>liidab talle temast suuruse poolest j\u00e4rgmise arvu;<\/li>\n<li>liidab tulemusele arvu 9;<\/li>\n<li>jagab tulemuse arvuga 2;<\/li>\n<li>lahutab tulemusest esialgse arvu.<\/li>\n<\/ul>\n<p class=\"vspace\">Eeltoodud tingimustele vastab j\u00e4rgmine programm:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">algne_arv = int(input(\"Sisestage t\u00e4isarv: \"))\r\nj\u00e4rgmine_arv = algne_arv + 1\r\ntulemus = algne_arv + j\u00e4rgmine_arv\r\ntulemus = tulemus + 9\r\ntulemus = tulemus \/ 2\r\ntulemus = tulemus - algne_arv\r\nprint(tulemus)<\/pre>\n<p class=\"vspace\">V\u00f5ib tunduda kummaline, et me saame muutujale anda v\u00e4\u00e4rtuse tehtega, milles kasutame sedasama muutujat ennast (nt <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">tulemus = tulemus + 9<\/code><\/code>). Tegelikult on see t\u00e4iesti lubatud ja sageli kasutatav. Nii saabki muutuja v\u00e4\u00e4rtust muuta.<\/p>\n<p class=\"vspace\">Proovi programmi erinevate arvudega! Milliseid tulemusi saad?<\/p>\n<p class=\"vspace\">Tulemus paistab olevat ujukomaarv. Mis hetkel see tekib? Thonnyga v\u00f5ime j\u00e4lgida muutujate v\u00e4\u00e4rtusi programmi jooksutamise ajal. Selleks tuleb muutujate paneel avada (<em>View<\/em> &#8211;&gt; <em>Variables<\/em>). Kui tavalisel moel programm k\u00e4ivitada (Run &#8211;&gt; Run current script v\u00f5i vastav rohelise ringiga nupp v\u00f5i klahv <em>F5<\/em>), siis tehakse programmi t\u00f6\u00f6 p\u00e4rast kasutajalt sisendi saamist \u00fche hooga \u00e4ra ja paistavad muutujate l\u00f5ppv\u00e4\u00e4rtused.<\/p>\n<p class=\"vspace\">Kui aga kasutada Thonny sammsammulise l\u00e4bimise v\u00f5imalusi, siis n\u00e4eme muutujate v\u00e4\u00e4rtuste muutumist ka samm-sammult. Selleks tuleb programm k\u00e4ivitada silumisre\u017eiimis (<em>Run<\/em> &#8211;&gt; <em>Debug current script<\/em> v\u00f5i putukaga nupp v\u00f5i <em>Ctrl + F5<\/em>). N\u00e4eme, et programmi esimene rida on esiletoodud. N\u00fc\u00fcd saame sammukaupa programmis edasi minna (<em>Run<\/em> &#8211;&gt; <em>Step over<\/em> v\u00f5i vastav noolega nupp v\u00f5i klahv <em>F6<\/em>).<\/p>\n<p class=\"vspace\">Katseta sammhaaval k\u00e4ivitamist! Millal saab muutuja <code>tulemus<\/code> v\u00e4\u00e4rtuseks ujukomaarvu?<\/p>\n<p class=\"vspace\">Proovige, mis muutub, kui jagamism\u00e4rgi <code>\/<\/code> asemel kasutada hoopis kahekordeset jagamism\u00e4rki <code>\/\/<\/code>, mis t\u00e4histab t\u00e4isarvulist jagamist. Kahe arvu jagamisel on tulemuseks alati t\u00e4isarv (v\u00f5i sellele vastav ujukomaarv). N\u00e4iteks <code>5 \/\/ 3<\/code> v\u00e4\u00e4rtuseks on <code>1<\/code>, tehte <code>5.1 \/\/ 3<\/code> v\u00e4\u00e4rtuseks aga <code>1.0<\/code>. Tuleb t\u00e4hele panna, et tulemuse saamiseks jagatist ei \u00fcmardata, vaid tulemuseks on k\u00f5ige suurem t\u00e4isarv, millest jagatis ei ole v\u00e4iksem.<\/p>\n<h3>Enesekontroll (1 k\u00fcsimus)<\/h3>\n<p><code><\/p>\n<div id=\"h5p-36\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-36\" class=\"h5p-iframe\" data-content-id=\"36\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"Sissejuhatus-5-jagamistehted\"><\/iframe><\/div>\n<\/div>\n<p><\/code><\/p>\n<h2 class=\"vspace\">Video<\/h2>\n<p>Vaata ka l\u00e4bi teemat kokkuv\u00f5ttev video:<\/p>\n<p><iframe loading=\"lazy\" id=\"oembed-1\" title=\"Informaatika valikkursus g\u00fcmnaasiumile - Sissejuhatus\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/KKAM-EGRRRA?feature=oembed&#38;rel=0\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n","protected":false},"author":12,"menu_order":5,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-229","chapter","type-chapter","status-publish","hentry"],"part":208,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/229","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":9,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/229\/revisions"}],"predecessor-version":[{"id":578,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/229\/revisions\/578"}],"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\/229\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/media?parent=229"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapter-type?post=229"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/contributor?post=229"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/license?post=229"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}