{"id":99,"date":"2018-12-10T16:02:30","date_gmt":"2018-12-10T16:02:30","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/?post_type=chapter&#038;p=99"},"modified":"2025-12-16T07:06:08","modified_gmt":"2025-12-16T07:06:08","slug":"soned","status":"publish","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/chapter\/soned\/","title":{"raw":"S\u00f5ned","rendered":"S\u00f5ned"},"content":{"raw":"S\u00f5ne (inglise keeles <em>string<\/em>) on andmet\u00fc\u00fcp, millega esitatakse tekstilisi andmeid. Selles peat\u00fckis vaatleme, kuidas on lubatud s\u00f5nesid Pythonis esitada ning t\u00f6\u00f6delda.\r\n<h2>Jutum\u00e4rgid ja \u00fclakomad<\/h2>\r\nPythonis on lubatud s\u00f5ne alguse ja l\u00f5pu m\u00e4\u00e4ramiseks kasutada nii \u00fclakomasid ( ' ) kui jutum\u00e4rke ( \" ). \u00dche s\u00f5ne alguses ja l\u00f5pus tuleb kasutada sama m\u00e4rki. N\u00e4iteks on korrektsed nii\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">print(\"Sisenesid pangaautomaati!\")<\/pre>\r\nkui ka\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">print('Sisenesid pangaautomaati!')<\/pre>\r\nPane t\u00e4hele, et jutum\u00e4rgid ja \u00fclakomad pole osa s\u00f5ne tekstilisest sisust: m\u00f5lemad n\u00e4ited v\u00e4ljastavad sama tulemuse:\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"beyond\">&gt;&gt;&gt;\r\nSisenesid pangaautomaati!<\/pre>\r\nJutum\u00e4rgid v\u00f5i \u00fclakomad on vajalikud selleks, et Python k\u00e4sitleks nende vahel paiknevaid s\u00fcmboleid tekstina, mitte n\u00e4iteks muutujanimedena. V\u00f5id katsetada, mis juhtub, kui jutum\u00e4rgid v\u00f5i \u00fclakomad \u00e4ra j\u00e4tta.\r\n\r\nOlemasoleva v\u00e4\u00e4rtuse muutmiseks s\u00f5neks kasutatakse funktsiooni <code class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">str<\/code>, lihtsalt jutum\u00e4rkide v\u00f5i \u00fclakomade lisamisest ei piisa.\r\n<h3>Enesekontroll (1 k\u00fcsimus)<\/h3>\r\n<code>[h5p id=\"9\"]<\/code>\r\n<h2>S\u00f5ne, mis sisaldab jutum\u00e4rke v\u00f5i \u00fclakomasid<\/h2>\r\nKui s\u00f5ne sisaldab jutum\u00e4rke v\u00f5i \u00fclakomasid, ei saa me seda s\u00fcmbolit s\u00f5ne alguse v\u00f5i l\u00f5pu m\u00e4\u00e4ramiseks kasutada. Olukorra lahendamiseks on kolm v\u00f5imalust:\r\n<h3>Teist t\u00fc\u00fcpi piiritleva s\u00fcmboli kasutamine<\/h3>\r\nKui tekstis esineb ainult \u00fcht t\u00fc\u00fcpi piiritlev s\u00fcmbol, siis on k\u00f5ige lihtsam kasutada teist t\u00fc\u00fcpi s\u00fcmbolit (\u00fclakomaga s\u00f5ne \u00fcmbritseda jutum\u00e4rkidega v\u00f5i vastupidi):\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">print(\"Rock 'n' roll\")\r\nprint('Jim \u00fctles vaid: \"Siin see on.\"')<\/pre>\r\n<code>[h5p id=\"10\"]<\/code>\r\n<h3>Langkriipsu kasutamine s\u00f5nes<\/h3>\r\nTeine variant on m\u00e4rkida s\u00f5ne sisus olevad probleemsed \u00fclakomad ja jutum\u00e4rgid langkriipsuga. Sellisel juhul ei loe Python neid s\u00f5ne piiritlejatena:\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">print(\"Jack vastas: \\\"Rock 'n' roll\\\".\")\r\nprint('Jack vastas: \"Rock \\'n\\' roll\".')<\/pre>\r\nM\u00f5lemad read annavad sama tulemuse:\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">&gt;&gt;&gt;\r\nJack vastas: \"Rock 'n' roll\".<\/pre>\r\nPane t\u00e4hele, et langkriips \\ ja kaldkriips \/ on erinevad m\u00e4rgid.\r\n\r\nLangkriipsu saab kasutada ka teiste eris\u00fcmbolite rakendamiseks. N\u00e4iteks saab reavahetuse lisada kombinatsiooniga <code class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">\\n<\/code>. N\u00e4iteks rida\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">print(\"Seda kuupaistet!\\nOh muutuksin s\u00fcndides\\nm\u00e4nniks m\u00e4etipul!\\n-Ryota\")<\/pre>\r\nannab tulemuse\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">&gt;&gt;&gt;\r\nSeda kuupaistet!\r\nOh muutuksin s\u00fcndides\r\nm\u00e4nniks m\u00e4etipul!\r\n-Ryota<\/pre>\r\nKui me soovime langkriipsu ennast s\u00f5nes kasutada, tuleb see m\u00e4rgistada teise langkriipsuga. N\u00e4iteks rida\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">print(\"C:\\\\kaustanimi\\\\failinimi.txt\")<\/pre>\r\nannab tulemuse\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">&gt;&gt;&gt;\r\nC:\\kaustanimi\\failinimi.txt<\/pre>\r\n<h3>Enesekontroll (1 k\u00fcsimus)<\/h3>\r\n<code>[h5p id=\"11\"]<\/code>\r\n<h3>Kolmekordse jutum\u00e4rgi v\u00f5i \u00fclakoma kasutamine<\/h3>\r\nKui tekst on pikk ja seal on palju jutum\u00e4rke, \u00fclakomasid v\u00f5i reavahetusi, siis on nende k\u00e4sitsi m\u00e4rkimine t\u00fclikas \u00fclesanne. Pythonis on lubatud s\u00f5ne piirid m\u00e4rkida kolmekordsete jutum\u00e4rkide v\u00f5i \u00fclakomadega, siis s\u00e4ilivad tekstis sisalduvad jutum\u00e4rgid, \u00fclakomad ja reavahetused.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-language=\"python\">print(\"\"\"Jack vastas: \"Rock 'n' roll\".\"\"\")\r\nprint('''Jack vastas: \"Rock 'n' roll\".''')<\/pre>\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-language=\"python\">print(\"\"\"Seda kuupaistet!\r\nOh muutuksin s\u00fcndides\r\nm\u00e4nniks m\u00e4etipul!\r\n--Ryota\"\"\")<\/pre>\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-language=\"python\">print(\"\"\"\r\n   _____\r\n  \/ ____|\r\n | |  __  __ _ _ __ ___   ___    _____   _____ _ __\r\n | | |_ |\/ _` | '_ ` _ \\ \/ _ \\  \/ _ \\ \\ \/ \/ _ \\ '__|\r\n | |__| | (_| | | | | | |  __\/ | (_) \\ V \/  __\/ |\r\n  \\_____|\\__,_|_| |_| |_|\\___|  \\___\/ \\_\/ \\___|_|\r\n\"\"\")<\/pre>\r\n<h3>Enesekontroll (1 k\u00fcsimus)<\/h3>\r\n<code>[h5p id=\"12\"]<\/code>\r\n<h2>S\u00f5nede manipuleerimine<\/h2>\r\n<h3>S\u00f5nede liitmine<\/h3>\r\nEelnevalt oleme kohanud s\u00f5nede liitmist. See k\u00e4ib plussm\u00e4rgi abil:\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">\"Tere \" + \"hommikust\"<\/pre>\r\n<h3>S\u00f5nemeetodid<\/h3>\r\nLeidub hulk funktsioone, mis \u00fchendatakse s\u00f5ne k\u00fclge punkti abil (selliseid funktsioone nimetatakse <strong>meetoditeks<\/strong>). Nende funktsioonide l\u00f5pus on sulud, mis v\u00f5ivad olla t\u00fchjad v\u00f5i mittet\u00fchjad. Katseta j\u00e4rgnevaid funktsioone ja selgita v\u00e4lja, mida need teevad:\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">print(\"tartu\".capitalize())\r\nprint(\"Tartu\".endswith(\"tu\"))\r\nprint(\"Tartu\".lower())\r\nprint(\"Tartu\".upper())\r\nprint(\"tartu\".count(\"t\"))\r\nprint(\"Tartu\".startswith(\"tu\"))\r\nprint(\"Kauneim linn on Eestis Tartu\".title())<\/pre>\r\nK\u00f5ikide Pythoni sisseehitatud s\u00f5nemeetodite juhend asub aadressil <a class=\"urllink\" href=\"http:\/\/docs.python.org\/3\/library\/stdtypes.html#string-methods\" target=\"_blank\" rel=\"noopener\">http:\/\/docs.python.org\/3\/library\/stdtypes.html#string-methods<\/a>.\r\n\r\nNeed funktsioonid t\u00f6\u00f6tavad ka muutujatega, mille v\u00e4\u00e4rtuseks on s\u00f5ne:\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">linn = \"Tartu\"\r\nprint(linn.lower())<\/pre>\r\n<h3>S\u00f5ne \u00fcksikud s\u00fcmbolid<\/h3>\r\nS\u00f5ne koosneb s\u00fcmbolitest ja neid saab eraldi k\u00e4sitleda. N\u00e4iteks tavam\u00f5ttes esimene s\u00fcmbol on indeksiga 0.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">linn = \"Tartu\"\r\nprint(linn[0])<\/pre>\r\n<h3>S\u00f5ne korrutamine<\/h3>\r\nKorrutusm\u00e4rgiga saab s\u00f5net korrata m\u00e4rgitud arv korda. N\u00e4iteks\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">lause = \"mull \" * 20\r\nprint(lause)<\/pre>\r\nv\u00e4ljastab ekraanile\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">&gt;&gt;&gt;\r\nmull mull mull mull mull mull mull mull mull mull mull mull mull mull mull mull mull mull mull mull<\/pre>\r\n<h3>Enesekontroll (1 k\u00fcsimus)<\/h3>\r\n<code>[h5p id=\"13\"]<\/code>\r\n<h2>V\u00e4ljund<\/h2>\r\nMe oleme funktsiooni <code class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">print<\/code> juba korduvalt kasutanud, kuid uurime seda n\u00fc\u00fcd p\u00f5hjalikumalt. Nagu me teame, v\u00e4ljastab see k\u00e4sk v\u00e4\u00e4rtusi ekraanile. Vaatame n\u00e4idet:\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">print(32 * 57)<\/pre>\r\nEkraanile v\u00e4ljastamiseks on m\u00e4\u00e4ratud sulgude sisu ehk <strong>argument<\/strong>. Selles n\u00e4ites on funktsiooni <code class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">print<\/code> argumendiks 32 * 57. Kui funktsioon k\u00e4ivitada, kuvatakse ekraanile 1824. P\u00f5hjalikumalt r\u00e4\u00e4gime funktsioonidest hilisemates peat\u00fckkides.\r\n\r\nK\u00e4sule <code class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">print<\/code> saab anda mitu argumenti, sellel juhul v\u00e4ljastatakse need t\u00fchikutega eraldatult.\r\n\r\nJ\u00e4rgnevad n\u00e4ited annavad samav\u00e4\u00e4rse tulemuse. Esimeses variandis kombineerime soovitud komponendid esmalt \u00fcheks s\u00f5neks ja anname selle k\u00e4su\u00a0<code class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">print<\/code> ainsaks argumendiks:\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">eesnimi = \"Peeter\"\r\nperenimi = \"Paan\"\r\nvanus = 21\r\nprint(eesnimi + \" \" + perenimi + \" vanus: \" + str(vanus))<\/pre>\r\nTeises variandis anname k\u00e4sule <code class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">print<\/code> komponendid eraldi argumentidena:\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">eesnimi = \"Peeter\"\r\nperenimi = \"Paan\"\r\nvanus = 21\r\nprint(eesnimi, perenimi, \"vanus:\", vanus)<\/pre>\r\nM\u00f5lemad programmid v\u00e4ljastavad sama tulemuse:\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">&gt;&gt;&gt;\r\nPeeter Paan vanus: 21<\/pre>\r\nEraldi argumentidega variandi kasutamine on lihtsam ja mugavam (n\u00e4iteks ei pea arve k\u00e4suga <code class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">str<\/code> s\u00f5neks teisendama). See-eest ei sobi see juhul, kui me ei soovi v\u00e4ljudis argumentide vahele t\u00fchikuid.\r\n<h3>Enesekontroll (1 k\u00fcsimus)<\/h3>\r\n<code>[h5p id=\"14\"]<\/code>\r\n<h2>Video<\/h2>\r\nSiin on s\u00f5nede kokkuv\u00f5ttev video:\r\n\r\n&nbsp;\r\n\r\nhttps:\/\/www.youtube.com\/watch?v=9mKv-XgHlks","rendered":"<p>S\u00f5ne (inglise keeles <em>string<\/em>) on andmet\u00fc\u00fcp, millega esitatakse tekstilisi andmeid. Selles peat\u00fckis vaatleme, kuidas on lubatud s\u00f5nesid Pythonis esitada ning t\u00f6\u00f6delda.<\/p>\n<h2>Jutum\u00e4rgid ja \u00fclakomad<\/h2>\n<p>Pythonis on lubatud s\u00f5ne alguse ja l\u00f5pu m\u00e4\u00e4ramiseks kasutada nii \u00fclakomasid ( &#8216; ) kui jutum\u00e4rke ( &#8221; ). \u00dche s\u00f5ne alguses ja l\u00f5pus tuleb kasutada sama m\u00e4rki. N\u00e4iteks on korrektsed nii<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">print(\"Sisenesid pangaautomaati!\")<\/pre>\n<p>kui ka<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">print('Sisenesid pangaautomaati!')<\/pre>\n<p>Pane t\u00e4hele, et jutum\u00e4rgid ja \u00fclakomad pole osa s\u00f5ne tekstilisest sisust: m\u00f5lemad n\u00e4ited v\u00e4ljastavad sama tulemuse:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-theme=\"beyond\">&gt;&gt;&gt;\r\nSisenesid pangaautomaati!<\/pre>\n<p>Jutum\u00e4rgid v\u00f5i \u00fclakomad on vajalikud selleks, et Python k\u00e4sitleks nende vahel paiknevaid s\u00fcmboleid tekstina, mitte n\u00e4iteks muutujanimedena. V\u00f5id katsetada, mis juhtub, kui jutum\u00e4rgid v\u00f5i \u00fclakomad \u00e4ra j\u00e4tta.<\/p>\n<p>Olemasoleva v\u00e4\u00e4rtuse muutmiseks s\u00f5neks kasutatakse funktsiooni <code class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">str<\/code>, lihtsalt jutum\u00e4rkide v\u00f5i \u00fclakomade lisamisest ei piisa.<\/p>\n<h3>Enesekontroll (1 k\u00fcsimus)<\/h3>\n<p><code><\/p>\n<div id=\"h5p-9\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-9\" class=\"h5p-iframe\" data-content-id=\"9\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"S\u00f5ned-1-S\u00f5neA\"><\/iframe><\/div>\n<\/div>\n<p><\/code><\/p>\n<h2>S\u00f5ne, mis sisaldab jutum\u00e4rke v\u00f5i \u00fclakomasid<\/h2>\n<p>Kui s\u00f5ne sisaldab jutum\u00e4rke v\u00f5i \u00fclakomasid, ei saa me seda s\u00fcmbolit s\u00f5ne alguse v\u00f5i l\u00f5pu m\u00e4\u00e4ramiseks kasutada. Olukorra lahendamiseks on kolm v\u00f5imalust:<\/p>\n<h3>Teist t\u00fc\u00fcpi piiritleva s\u00fcmboli kasutamine<\/h3>\n<p>Kui tekstis esineb ainult \u00fcht t\u00fc\u00fcpi piiritlev s\u00fcmbol, siis on k\u00f5ige lihtsam kasutada teist t\u00fc\u00fcpi s\u00fcmbolit (\u00fclakomaga s\u00f5ne \u00fcmbritseda jutum\u00e4rkidega v\u00f5i vastupidi):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">print(\"Rock 'n' roll\")\r\nprint('Jim \u00fctles vaid: \"Siin see on.\"')<\/pre>\n<p><code><\/p>\n<div id=\"h5p-10\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-10\" class=\"h5p-iframe\" data-content-id=\"10\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"S\u00f5ned-1-Jim\"><\/iframe><\/div>\n<\/div>\n<p><\/code><\/p>\n<h3>Langkriipsu kasutamine s\u00f5nes<\/h3>\n<p>Teine variant on m\u00e4rkida s\u00f5ne sisus olevad probleemsed \u00fclakomad ja jutum\u00e4rgid langkriipsuga. Sellisel juhul ei loe Python neid s\u00f5ne piiritlejatena:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">print(\"Jack vastas: \\\"Rock 'n' roll\\\".\")\r\nprint('Jack vastas: \"Rock \\'n\\' roll\".')<\/pre>\n<p>M\u00f5lemad read annavad sama tulemuse:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">&gt;&gt;&gt;\r\nJack vastas: \"Rock 'n' roll\".<\/pre>\n<p>Pane t\u00e4hele, et langkriips \\ ja kaldkriips \/ on erinevad m\u00e4rgid.<\/p>\n<p>Langkriipsu saab kasutada ka teiste eris\u00fcmbolite rakendamiseks. N\u00e4iteks saab reavahetuse lisada kombinatsiooniga <code class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">\\n<\/code>. N\u00e4iteks rida<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">print(\"Seda kuupaistet!\\nOh muutuksin s\u00fcndides\\nm\u00e4nniks m\u00e4etipul!\\n-Ryota\")<\/pre>\n<p>annab tulemuse<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">&gt;&gt;&gt;\r\nSeda kuupaistet!\r\nOh muutuksin s\u00fcndides\r\nm\u00e4nniks m\u00e4etipul!\r\n-Ryota<\/pre>\n<p>Kui me soovime langkriipsu ennast s\u00f5nes kasutada, tuleb see m\u00e4rgistada teise langkriipsuga. N\u00e4iteks rida<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">print(\"C:\\\\kaustanimi\\\\failinimi.txt\")<\/pre>\n<p>annab tulemuse<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">&gt;&gt;&gt;\r\nC:\\kaustanimi\\failinimi.txt<\/pre>\n<h3>Enesekontroll (1 k\u00fcsimus)<\/h3>\n<p><code><\/p>\n<div id=\"h5p-11\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-11\" class=\"h5p-iframe\" data-content-id=\"11\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"S\u00f5ned-1-lemmikraamatud\"><\/iframe><\/div>\n<\/div>\n<p><\/code><\/p>\n<h3>Kolmekordse jutum\u00e4rgi v\u00f5i \u00fclakoma kasutamine<\/h3>\n<p>Kui tekst on pikk ja seal on palju jutum\u00e4rke, \u00fclakomasid v\u00f5i reavahetusi, siis on nende k\u00e4sitsi m\u00e4rkimine t\u00fclikas \u00fclesanne. Pythonis on lubatud s\u00f5ne piirid m\u00e4rkida kolmekordsete jutum\u00e4rkide v\u00f5i \u00fclakomadega, siis s\u00e4ilivad tekstis sisalduvad jutum\u00e4rgid, \u00fclakomad ja reavahetused.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-language=\"python\">print(\"\"\"Jack vastas: \"Rock 'n' roll\".\"\"\")\r\nprint('''Jack vastas: \"Rock 'n' roll\".''')<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-language=\"python\">print(\"\"\"Seda kuupaistet!\r\nOh muutuksin s\u00fcndides\r\nm\u00e4nniks m\u00e4etipul!\r\n--Ryota\"\"\")<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\" data-enlighter-language=\"python\">print(\"\"\"\r\n   _____\r\n  \/ ____|\r\n | |  __  __ _ _ __ ___   ___    _____   _____ _ __\r\n | | |_ |\/ _` | '_ ` _ \\ \/ _ \\  \/ _ \\ \\ \/ \/ _ \\ '__|\r\n | |__| | (_| | | | | | |  __\/ | (_) \\ V \/  __\/ |\r\n  \\_____|\\__,_|_| |_| |_|\\___|  \\___\/ \\_\/ \\___|_|\r\n\"\"\")<\/pre>\n<h3>Enesekontroll (1 k\u00fcsimus)<\/h3>\n<p><code><\/p>\n<div id=\"h5p-12\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-12\" class=\"h5p-iframe\" data-content-id=\"12\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"S\u00f5ned-1-Rocknroll\"><\/iframe><\/div>\n<\/div>\n<p><\/code><\/p>\n<h2>S\u00f5nede manipuleerimine<\/h2>\n<h3>S\u00f5nede liitmine<\/h3>\n<p>Eelnevalt oleme kohanud s\u00f5nede liitmist. See k\u00e4ib plussm\u00e4rgi abil:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">\"Tere \" + \"hommikust\"<\/pre>\n<h3>S\u00f5nemeetodid<\/h3>\n<p>Leidub hulk funktsioone, mis \u00fchendatakse s\u00f5ne k\u00fclge punkti abil (selliseid funktsioone nimetatakse <strong>meetoditeks<\/strong>). Nende funktsioonide l\u00f5pus on sulud, mis v\u00f5ivad olla t\u00fchjad v\u00f5i mittet\u00fchjad. Katseta j\u00e4rgnevaid funktsioone ja selgita v\u00e4lja, mida need teevad:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">print(\"tartu\".capitalize())\r\nprint(\"Tartu\".endswith(\"tu\"))\r\nprint(\"Tartu\".lower())\r\nprint(\"Tartu\".upper())\r\nprint(\"tartu\".count(\"t\"))\r\nprint(\"Tartu\".startswith(\"tu\"))\r\nprint(\"Kauneim linn on Eestis Tartu\".title())<\/pre>\n<p>K\u00f5ikide Pythoni sisseehitatud s\u00f5nemeetodite juhend asub aadressil <a class=\"urllink\" href=\"http:\/\/docs.python.org\/3\/library\/stdtypes.html#string-methods\" target=\"_blank\" rel=\"noopener\">http:\/\/docs.python.org\/3\/library\/stdtypes.html#string-methods<\/a>.<\/p>\n<p>Need funktsioonid t\u00f6\u00f6tavad ka muutujatega, mille v\u00e4\u00e4rtuseks on s\u00f5ne:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">linn = \"Tartu\"\r\nprint(linn.lower())<\/pre>\n<h3>S\u00f5ne \u00fcksikud s\u00fcmbolid<\/h3>\n<p>S\u00f5ne koosneb s\u00fcmbolitest ja neid saab eraldi k\u00e4sitleda. N\u00e4iteks tavam\u00f5ttes esimene s\u00fcmbol on indeksiga 0.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">linn = \"Tartu\"\r\nprint(linn[0])<\/pre>\n<h3>S\u00f5ne korrutamine<\/h3>\n<p>Korrutusm\u00e4rgiga saab s\u00f5net korrata m\u00e4rgitud arv korda. N\u00e4iteks<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">lause = \"mull \" * 20\r\nprint(lause)<\/pre>\n<p>v\u00e4ljastab ekraanile<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">&gt;&gt;&gt;\r\nmull mull mull mull mull mull mull mull mull mull mull mull mull mull mull mull mull mull mull mull<\/pre>\n<h3>Enesekontroll (1 k\u00fcsimus)<\/h3>\n<p><code><\/p>\n<div id=\"h5p-13\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-13\" class=\"h5p-iframe\" data-content-id=\"13\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"S\u00f5ned-1-korrutamine\"><\/iframe><\/div>\n<\/div>\n<p><\/code><\/p>\n<h2>V\u00e4ljund<\/h2>\n<p>Me oleme funktsiooni <code class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">print<\/code> juba korduvalt kasutanud, kuid uurime seda n\u00fc\u00fcd p\u00f5hjalikumalt. Nagu me teame, v\u00e4ljastab see k\u00e4sk v\u00e4\u00e4rtusi ekraanile. Vaatame n\u00e4idet:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">print(32 * 57)<\/pre>\n<p>Ekraanile v\u00e4ljastamiseks on m\u00e4\u00e4ratud sulgude sisu ehk <strong>argument<\/strong>. Selles n\u00e4ites on funktsiooni <code class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">print<\/code> argumendiks 32 * 57. Kui funktsioon k\u00e4ivitada, kuvatakse ekraanile 1824. P\u00f5hjalikumalt r\u00e4\u00e4gime funktsioonidest hilisemates peat\u00fckkides.<\/p>\n<p>K\u00e4sule <code class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">print<\/code> saab anda mitu argumenti, sellel juhul v\u00e4ljastatakse need t\u00fchikutega eraldatult.<\/p>\n<p>J\u00e4rgnevad n\u00e4ited annavad samav\u00e4\u00e4rse tulemuse. Esimeses variandis kombineerime soovitud komponendid esmalt \u00fcheks s\u00f5neks ja anname selle k\u00e4su\u00a0<code class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">print<\/code> ainsaks argumendiks:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">eesnimi = \"Peeter\"\r\nperenimi = \"Paan\"\r\nvanus = 21\r\nprint(eesnimi + \" \" + perenimi + \" vanus: \" + str(vanus))<\/pre>\n<p>Teises variandis anname k\u00e4sule <code class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">print<\/code> komponendid eraldi argumentidena:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">eesnimi = \"Peeter\"\r\nperenimi = \"Paan\"\r\nvanus = 21\r\nprint(eesnimi, perenimi, \"vanus:\", vanus)<\/pre>\n<p>M\u00f5lemad programmid v\u00e4ljastavad sama tulemuse:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">&gt;&gt;&gt;\r\nPeeter Paan vanus: 21<\/pre>\n<p>Eraldi argumentidega variandi kasutamine on lihtsam ja mugavam (n\u00e4iteks ei pea arve k\u00e4suga <code class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">str<\/code> s\u00f5neks teisendama). See-eest ei sobi see juhul, kui me ei soovi v\u00e4ljudis argumentide vahele t\u00fchikuid.<\/p>\n<h3>Enesekontroll (1 k\u00fcsimus)<\/h3>\n<p><code><\/p>\n<div id=\"h5p-14\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-14\" class=\"h5p-iframe\" data-content-id=\"14\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"S\u00f5ned-1-ottotriin\"><\/iframe><\/div>\n<\/div>\n<p><\/code><\/p>\n<h2>Video<\/h2>\n<p>Siin on s\u00f5nede kokkuv\u00f5ttev video:<\/p>\n<p>&nbsp;<\/p>\n<p><iframe loading=\"lazy\" id=\"oembed-1\" title=\"Informaatika valikkursus g\u00fcmnaasiumile - S\u00f5ned\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/9mKv-XgHlks?feature=oembed&#38;rel=0\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n","protected":false},"author":12,"menu_order":1,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-99","chapter","type-chapter","status-publish","hentry"],"part":97,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/99","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":12,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/99\/revisions"}],"predecessor-version":[{"id":610,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/99\/revisions\/610"}],"part":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/parts\/97"}],"metadata":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/99\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/media?parent=99"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapter-type?post=99"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/contributor?post=99"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/license?post=99"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}