{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Praktikum 2, lahendused\n", "\n", "Allolevad ülesanded on kusrsuse \"Sissejuhatus programmeerimisse Pythoni baasil\" YFX0500 **praktikumis** koos kursusega ja **kodus** iseseisvalt lahendamiseks. Kuidas lahendada allolevaid ülesandeid? Uuri ja kasuta loengus kommenteeritud süntaksi näiteid, abiinfot (Pythoni sisseehitatud funktsioon `help`, jne.), internetti ja enda aju. Küsimuste korral, mis tekivad praktikumi ajal, pöördu õppejõu või õppejõudude poole. Iganädalaselt peale praktikumi toimumist avaldatakse ülesannete lahendused kursuse kodulehel.\n", "\n", "
Viimati uuendatud 9.09.2024.
\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 1:**\n", "\n", "Loo list, korteez ja hulk mis sisaldavad täisarve ühest viieni. Väljastage konsooli listi, korteezi ja hulga kolmandad elemendid. Vajadusel seleta saadud tulemus." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3\n", "3\n" ] }, { "ename": "TypeError", "evalue": "'set' object is not subscriptable", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[1], line 7\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28mprint\u001b[39m(lst[\u001b[38;5;241m2\u001b[39m])\n\u001b[1;32m 6\u001b[0m \u001b[38;5;28mprint\u001b[39m(tpl[\u001b[38;5;241m2\u001b[39m])\n\u001b[0;32m----> 7\u001b[0m \u001b[38;5;28mprint\u001b[39m(st[\u001b[38;5;241m2\u001b[39m])\n", "\u001b[0;31mTypeError\u001b[0m: 'set' object is not subscriptable" ] } ], "source": [ "lst = [1,2,3,4,5]\n", "tpl = (1,2,3,4,5)\n", "st = {1,2,3,4,5}\n", "\n", "print(lst[2])\n", "print(tpl[2])\n", "print(st[2]) # Ei saa, pole järjestatud/indekseeritud." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 2:**\n", "\n", "Loo sõnastik `pikkus` mis sisaldab võtmeid `isa`, `ema` ja `laps` ning vastavaid väärtusi `100`, `80` ja `40`. Väljasta ema pikkuse arvväärtus konsooli.\n", "\n", "Oodatav tulemus: `80`." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "80" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pikkus = {'isa':100, 'ema':80, 'laps':40}\n", "pikkus['ema']" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "80" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pikkus = dict(isa=100, ema=80, laps=40)\n", "pikkus['ema']" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "80" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pikkus = dict([('isa', 100), ('ema', 80), ('laps', 40)])\n", "pikkus['ema']" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "80" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pikkus = dict((('isa', 100), ('ema', 80), ('laps', 40)))\n", "pikkus['ema']" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "80" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pikkus = dict({('isa', 100), ('ema', 80), ('laps', 40)})\n", "pikkus['ema']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 3:**\n", "\n", "Loo ja kasuta listi `[1, 2, 3, [3, 4, 5], 6, 7, 8]`. Millise objekti indeks on 3? Kuidas väljastada pesastatud listi `[3, 4, 5]` element/täisarv väärtusega `4`?" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[3, 4, 5]\n", "4\n" ] } ], "source": [ "lst = [1, 2, 3, [3, 4, 5], 6, 7, 8]\n", "# Pesastatud listi ndeks on 3\n", "pesastatud_list = lst[3]\n", "print(pesastatud_list)\n", "print(pesastatud_list[1]) # Loogiline mõtlemine." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4\n" ] } ], "source": [ "lst = [1, 2, 3, [3, 4, 5], 6, 7, 8]\n", "print(lst[3][1]) # Lubatud süntaks, lühem." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[1, 2, 3, [3, 4, 5], 6, 7, 8][3][1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 4:**\n", "\n", "Loo pesastatud hulk `(1, 2, [1, 3, (6, ), 5])`, väljasta konsooli pesastatud listi esimene element ja pesastatud hulga ainuke element.\n", "\n", "Oodatav tulemus: `1` ja `6`." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "6\n" ] } ], "source": [ "my_set = (1, 2, [1, 3, (6, ), 5])\n", "print(my_set[0])\n", "print(my_set[2][2][0])" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(1, 2, [1, 3, (6, ), 5])[0]" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "6" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(1, 2, [1, 3, (6, ), 5])[2][2][0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 5:**\n", "\n", "Loo:\n", "1) sõnastik `mees` mis sisaldab võtmeid `pikkus` ja `kaal` ning väärtusi `160` ja `130`. Väljasta konsooli mehe kaal.\n", "2) sõnastik `naine` mis sisaldab võtmeid `pikkus` ja `kaal` ning väärtusi `180` ja `80`. Väljasta konsooli naise pikkus.\n", "3) sõnastik `inimene` mis *sisaldab* mõlemat eelnevalt loodud sõnastikku. Väljasta konsooli naise kaal.\n", "\n", "Oodatav tulemus: 1) `130`; 2) `180`; 3) `80`." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "130\n" ] } ], "source": [ "# 1) mees\n", "mees = {'pikkus':160, 'kaal':130}\n", "print(mees['kaal'])" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "180\n" ] } ], "source": [ "# 2) naine\n", "naine = {'pikkus':180, 'kaal':80}\n", "print(naine['pikkus'])" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "80\n" ] } ], "source": [ "# 3) koos\n", "inimene = {\n", " 'mees':{'pikkus':160, 'kaal':135},\n", " 'naine':{'pikkus':180, 'kaal':80}\n", "}\n", "\n", "inimene_naine = inimene['naine'] # Viitan pesastatud sõnastikule\n", "\n", "print(inimene_naine['kaal'])" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "80\n" ] } ], "source": [ "# 3) koos\n", "inimene = {\n", " 'mees':{'pikkus':160, 'kaal':135},\n", " 'naine':{'pikkus':180, 'kaal':80}\n", "}\n", "\n", "print(inimene['naine']['kaal']) # Lühem" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "80\n" ] } ], "source": [ "# 3) koos\n", "mees = {'pikkus':160, 'kaal':130}\n", "naine = {'pikkus':180, 'kaal':80}\n", "\n", "inimene = {'mees':mees, 'naine':naine} # olemasolevate definitsioonide kasutus\n", "\n", "print(inimene['naine']['kaal'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 6:**\n", "\n", "Loo sõne `\"Ahoi\"`. Lõika välja loodud sõne kaks viimast tähte ja väljasta tähed konsooli kolm korda üksteise järel sõnena.\n", "\n", "Oodatav tulemus: `'oioioi'` või `oioioi`." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'oioioi'" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Lahend 1\n", "3 * \"Ahoi\"[-2:]" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "oioioi\n" ] } ], "source": [ "# Lahend 2\n", "print(3 * \"Ahoi\"[-2:])" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'oioioi'" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Lahend 3\n", "3 * \"Ahoi\"[2:]" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "oioioi\n" ] } ], "source": [ "# Lahend 4\n", "print(3 * \"Ahoi\"[2:])" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "oioioi\n" ] } ], "source": [ "# Lahend 5\n", "word = \"Ahoi\"\n", "print(3 * word[-2:])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 7:**\n", "\n", "Loo sõne `\"Ahoi\"`. Lõika välja loodud sõne kaks viimast tähte ja lisa need loodud sõnele kaks korda.\n", "\n", "Oodatav tulemus: `'Ahoioioi'` või `Ahoioioi`." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Ahoioioi'" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Lahend 1\n", "\"Ahoi\" + 2*\"Ahoi\"[-2:]" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ahoioioi\n" ] } ], "source": [ "# Lahend 2\n", "print(\"Ahoi\" + 2*\"Ahoi\"[-2:])" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Ahoioioi'" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Lahend 3\n", "\"Ahoi\" + 2*\"Ahoi\"[2:] # Pole üldistatud." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ahoioioi\n" ] } ], "source": [ "# Lahend 4\n", "print(\"Ahoi\" + 2*\"Ahoi\"[2:]) # Pole üldistatud." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ahoioioi\n" ] } ], "source": [ "# Lahend 5\n", "word = \"Ahoi\"\n", "print(word + 2*word[-2:])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 8:**\n", "\n", "Loo vähemalt kolmetäheline meelevaldne sõne, nt. `\"Kombain\"`. Kirjuta programm mis väljastab konsooli loodud sõne keskmised tähed, teisisõnu eemaldab esimese ja viimase tähe.\n", "\n", "Oodatava tulemuse näide: `\"Kombain\"` → `'ombai'` või `ombai`." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'ombai'" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Lahend 1\n", "word = 'Kombain'\n", "new_word = word[1:-1]\n", "new_word" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ombai\n" ] } ], "source": [ "# Lahend 2\n", "word = 'Kombain'\n", "new_word = word[1:-1]\n", "print(new_word)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ombai\n" ] } ], "source": [ "# Lahend 3\n", "word = 'Kombain'\n", "new_word = word[1:6] # Pole üldistatud.\n", "print(new_word)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'ombai'" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Lahend 3\n", "word = 'Kombain'\n", "new_word = word.replace('K', '', 1) # Pole üldistatud.\n", "new_word = new_word.replace('n', '', 1)\n", "new_word" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'ombai'" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Lahend 4\n", "word = 'Kombain'\n", "new_word = word.replace(word[0], '', 1)\n", "new_word = new_word.replace(word[-1], '', 1)\n", "new_word" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 9:**\n", "\n", "Kas operaatoreid `+`, `-`, `*`, `/` saab rakendada loengus käsitletud andmetüüpidele: sõne, list, korteez, hulk ja sõnastik? Kontrolli ka segatehteid.\n", "\n", "Näide: `3 * [2, 3, 4, 5]` või `(3, 4, 5) / (8, 7, 6)` või `{1, 2, 3} + {1, 2}`, jne." ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['abc', 3, 4, 1, 2, 3]" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "['abc', 3, 4] + [1, 2, 3]" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 1, 2, 3, 1, 2, 3]" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "3 * [1, 2, 3]" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1, 2, 2, 1, 2, 2, 1, 2, 2)" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "3 * (1, 2, 2)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1, 2, 3, 1)" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(1, 2, 3) + (1,)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{1}" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "{1, 2} - {2, 3} # Hulkade vahe, meetod difference, vt. järgmine rakk." ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{1}" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "{1, 2}.difference({2, 3})" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'abcabc'" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'abc' * 2 # Eelmise nädala praktikum." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 10:**\n", "\n", "Omista muutujale tühi sõne. Lisa loodud sõnele mõni täht/sümbol." ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'AB'" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Lahend 1\n", "string = ''\n", "new_string = string + 'AB'\n", "new_string" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "AB\n" ] } ], "source": [ "# Lahend 2\n", "string = ''\n", "new_string = string + 'AB'\n", "print(new_string)" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "AB\n" ] } ], "source": [ "# Lahend 3\n", "string = ''\n", "new_string = string.replace('', 'AB')\n", "print(new_string)" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "AB\n" ] } ], "source": [ "# Lahend 4\n", "string = ''\n", "new_string = string.join('AB') # Veider kasutus\n", "print(new_string)" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "00\n" ] } ], "source": [ "# Lahend 5\n", "string = ''\n", "new_string = string.zfill(2) # Veider kasutus\n", "print(new_string)" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "' '" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Lahend 6\n", "string = ''\n", "new_string = string.rjust(2) # Veider kasutus, tühik on tähemaärk seega sümbol.\n", "new_string" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 11:**\n", "\n", "Omista muutujale tühi list. Lisa loodud listile andmeid." ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[2, 3]\n" ] } ], "source": [ "my_lst = []\n", "my_lst = my_lst + [2, 3]\n", "print(my_lst)" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['A', 2, [1, 2]]\n" ] } ], "source": [ "my_lst = []\n", "my_lst.append('A')\n", "my_lst.append(2)\n", "my_lst.append([1, 2])\n", "print(my_lst)" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['A', ['b', 3]]\n" ] } ], "source": [ "my_lst = []\n", "my_lst.insert(1, 'A') # Suvaline indeks töötab.\n", "my_lst.insert(1, ['b', 3])\n", "print(my_lst)" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['A', 'B', 1, 2]\n" ] } ], "source": [ "my_lst = []\n", "my_lst.extend(['A', 'B'])\n", "tpl1 = (1, 2)\n", "my_lst.extend(tpl1)\n", "print(my_lst)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 12:**\n", "\n", "Omista muutujale tühi ennik. *Lisa* või jäta mulje, et lisasid (ennik on muutumatu andmetüüp) loodud ennikule andmeid." ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(2,)\n" ] } ], "source": [ "my_tuple = ()\n", "my_tuple = my_tuple + (2,)\n", "print(my_tuple)" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(2, 3, 4)\n" ] } ], "source": [ "my_tuple = ()\n", "my_tuple = my_tuple + (2,) + (3, 4)\n", "print(my_tuple)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 13:**\n", "\n", "Omista muutujale tühi hulk. Lisa loodud hulgale andmeid." ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{1}\n" ] } ], "source": [ "my_set = set() # set on sisseehitatuud funktsioon.\n", "my_set.add(1) # Täisarvud on muutumatud objektid.\n", "my_set.add(1) # Unikaalsus\n", "print(my_set)" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{(1,), 'Juulius'}\n" ] } ], "source": [ "my_set = set()\n", "my_set.add((1,))\n", "my_set.add('Juulius')\n", "print(my_set)" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{1, 2}\n" ] } ], "source": [ "my_set = set()\n", "my_set.update({1, 2})\n", "print(my_set)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 14:**\n", "\n", "Omista muutujale tühi sõnastik. Lisa loodud sõnastikule sisu." ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'key1': 'value1', 2: 'value2', 2.3: 3, (1, 1): 'value3'}\n" ] } ], "source": [ "dic = {}\n", "\n", "dic['key1'] = 'value1'\n", "dic[2] = 'value2'\n", "dic[2.3] = 3\n", "dic[(1, 1)] = 'value3'\n", "\n", "print(dic)" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'key': 'value', 'brand': 'Ford', 'model': 'Mustang', 'year': 1964}\n" ] } ], "source": [ "dic = {}\n", "\n", "car = {\n", " \"brand\": \"Ford\",\n", " \"model\": \"Mustang\",\n", " \"year\": 1964\n", "}\n", "\n", "dic.update({'key':'value'}) # Lisame uue paari.\n", "dic.update(car) # Lisame terve kujutuse.\n", "print(dic)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 15:**\n", "\n", "Loo muutuja nimega \"`pi`\" ning määra selle väärtuseks $\\pi = 3.14159265359$. Väljasta konsooli loodud muutuja nelja komakoha täpsusega." ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'3.1416'" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pi = 3.14159265359\n", "'{:.4f}'.format(pi)" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3.1416\n" ] } ], "source": [ "pi = 3.14159265359\n", "tulem = '{:.4f}'.format(pi)\n", "print(tulem)" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3.1416\n" ] } ], "source": [ "pi = 3.14159265359\n", "tulem = '{:.5g}'.format(pi)\n", "print(tulem)" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3.1416\n" ] } ], "source": [ "π = \"3.14159265359\" # Kreeka sümboli sisestus: \\pi + TAB klahv, töötab ainult Jupyteris.\n", "print(π[:5] + \"6\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 16:**\n", "\n", "Kasuta funktsiooni `print`. Prindi konsooli järgmine lause:\n", "\"**Mari** on **32** aastat vana ja tema koera nimi on **Bella**.\" Paksus kirjas sõned sisesta kasutades muutujaid:\n", "`nimi`, `vanus` ja `koera_nimi`." ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mari on 32 aastat vana ja tema koera nimi on Bella.\n" ] } ], "source": [ "nimi = 'Mari'\n", "vanus = '32'\n", "koera_nimi = 'Bella'\n", "print(f'{nimi} on {vanus} aastat vana ja tema koera nimi on {koera_nimi}.')" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mari on 32 aastat vana ja tema koera nimi on Bella.\n" ] } ], "source": [ "nimi = 'Mari'\n", "vanus = '32'\n", "koera_nimi = 'Bella'\n", "print('{} on {} aastat vana ja tema koera nimi on {}.'.format(nimi, vanus, koera_nimi))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 17:**\n", "\n", "Väljasta konsooli allolev väljund. Kasuta ühte funktsiooni `print` väljakutset ja spetsiaalseid *escape charactere*.\n", "\n", "```\n", " /|\n", " / |\n", " / |\n", " / |\n", " /____|\n", "```" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " /|\n", " / |\n", " / |\n", " / |\n", "/____|\n" ] } ], "source": [ "print(' /|\\n / |\\n / |\\n / |\\n/____|')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 18:**\n", "\n", "Kirjuta programm mis täidab järgmise avalduse automaatselt. Kasuta sõne meetodit `format`.\n", "\n", "```\n", " {nimi}\n", " {amet}\n", "{kellele}\n", " {kuupäev}\n", " \n", " \n", " AVALDUS\n", " \n", "Palun mind {tegevus}.\n", " \n", " \n", " \n", "Lugupidamisega,\n", "{nimi}\n", "```\n", "Kasuta järgmiseid muutuja väärtusi:\n", "\n", "```\n", "nimi = \"Juulius Tipikas\"\n", "amet = \"tudeng\"\n", "kellele = \"Direktorile\"\n", "tegevus = \"eksmatrikuleerida\"\n", "kuupäev = \"8. oktoober 2024\"\n", "```" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " Juulius Tipikas\n", " tudeng\n", "Direktorile\n", " 8. oktoober 2024\n", " \n", " \n", " AVALDUS\n", " \n", "Palun mind eksmatrikuleerida.\n", " \n", " \n", " \n", "Lugupidamisega,\n", "Juulius Tipikas\n", "\n" ] } ], "source": [ "avalduse_vorm = '''\n", " {nimi}\n", " {amet}\n", "{kellele}\n", " {kuupaev}\n", " \n", " \n", " AVALDUS\n", " \n", "Palun mind {tegevus}.\n", " \n", " \n", " \n", "Lugupidamisega,\n", "{nimi}\n", "'''\n", "\n", "avaldus = avalduse_vorm.format(nimi = \"Juulius Tipikas\",\n", " amet = \"tudeng\",\n", " kellele = \"Direktorile\",\n", " tegevus = \"eksmatrikuleerida\",\n", " kuupaev = \"8. oktoober 2024\")\n", "print(avaldus)" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " Juulius Tipikas\n", " tudeng\n", "Direktorile\n", " 8. oktoober 2024\n", " \n", " \n", " AVALDUS\n", " \n", "Palun mind eksmatrikuleerida.\n", " \n", " \n", " \n", "Lugupidamisega,\n", "Juulius Tipikas\n" ] } ], "source": [ "nimi = \"Juulius Tipikas\"\n", "amet = \"tudeng\"\n", "kellele = \"Direktorile\"\n", "tegevus = \"eksmatrikuleerida\"\n", "kuupaev = \"8. oktoober 2024\"\n", "\n", "avaldus = f'''\n", " {nimi}\n", " {amet}\n", "{kellele}\n", " {kuupaev}\n", " \n", " \n", " AVALDUS\n", " \n", "Palun mind {tegevus}.\n", " \n", " \n", " \n", "Lugupidamisega,\n", "{nimi}'''\n", "\n", "print(avaldus)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 19:** \n", "\n", "Leia mitu korda esineb allolevas tekstis sõna \"culpa\".\n", "```\n", "Lorem ipsum dolor sit amet, consectetur adipiscing elitculpa, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duisculpa aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n", "```\n", "Vastus: 1 mitte 3." ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'Lorem ipsum dolor sit amet, consectetur adipiscing elitculpa, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duisculpa aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'.count(' culpa ')" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = 'Lorem ipsum dolor sit amet, consectetur adipiscing elitculpa, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duisculpa aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'\n", "a.count(' culpa')" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.split().count(\"culpa\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 20:**\n", "\n", "Asenda allolevas tekstis esinev sõna \"Jumal\" (ja selle muud vormid) sõnaga \"Saatan\".\n", "\n", "```\n", "1 Alguses lõi Jumal taeva ja maa.\n", "2 Maa oli tühi ja paljas ja pimedus \n", "oli sügavuse peal ja Jumala Vaim hõljus vete kohal.\n", "3 Ja Jumal ütles: \n", "„Saagu valgus!” Ja valgus sai.\n", "4 Ja Jumal nägi, et valgus oli hea, \n", "ja Jumal lahutas valguse pimedusest.\n", "5 Ja Jumal nimetas valguse päevaks \n", "ja pimeduse ta nimetas ööks. Siis sai õhtu ja sai hommik - \n", "esimene päev.\n", "6 Ja Jumal ütles: „Saagu laotus vete \n", "vahele ja see lahutagu veed vetest!”\n", "7 Ja nõnda sündis: Jumal tegi laotuse \n", "ja lahutas veed, mis olid laotuse all, vetest, mis olid laotuse peal.\n", "8 Ja Jumal nimetas laotuse taevaks. \n", "Siis sai õhtu ja sai hommik - teine päev.\n", "9 Ja Jumal ütles: „Veed kogunegu \n", "taeva all ühte paika, et kuiva näha oleks!” Ja nõnda sündis.\n", "10 Ja Jumal nimetas kuiva pinna maaks \n", "ja veekogu ta nimetas mereks. Ja Jumal nägi, et see oli hea.\n", "```" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 Alguses lõi Saatan taeva ja maa.\n", "2 Maa oli tühi ja paljas ja pimedus \n", "oli sügavuse peal ja Saatana Vaim hõljus vete kohal.\n", "3 Ja Saatan ütles: \n", "„Saagu valgus!” Ja valgus sai.\n", "4 Ja Saatan nägi, et valgus oli hea, \n", "ja Saatan lahutas valguse pimedusest.\n", "5 Ja Saatan nimetas valguse päevaks \n", "ja pimeduse ta nimetas ööks. Siis sai õhtu ja sai hommik - \n", "esimene päev.\n", "6 Ja Saatan ütles: „Saagu laotus vete \n", "vahele ja see lahutagu veed vetest!”\n", "7 Ja nõnda sündis: Saatan tegi laotuse \n", "ja lahutas veed, mis olid laotuse all, vetest, mis olid laotuse peal.\n", "8 Ja Saatan nimetas laotuse taevaks. \n", "Siis sai õhtu ja sai hommik - teine päev.\n", "9 Ja Saatan ütles: „Veed kogunegu \n", "taeva all ühte paika, et kuiva näha oleks!” Ja nõnda sündis.\n", "10 Ja Saatan nimetas kuiva pinna maaks \n", "ja veekogu ta nimetas mereks. Ja Saatan nägi, et see oli hea.\n" ] } ], "source": [ "txt = '''1 Alguses lõi Jumal taeva ja maa.\n", "2 Maa oli tühi ja paljas ja pimedus \n", "oli sügavuse peal ja Jumala Vaim hõljus vete kohal.\n", "3 Ja Jumal ütles: \n", "„Saagu valgus!” Ja valgus sai.\n", "4 Ja Jumal nägi, et valgus oli hea, \n", "ja Jumal lahutas valguse pimedusest.\n", "5 Ja Jumal nimetas valguse päevaks \n", "ja pimeduse ta nimetas ööks. Siis sai õhtu ja sai hommik - \n", "esimene päev.\n", "6 Ja Jumal ütles: „Saagu laotus vete \n", "vahele ja see lahutagu veed vetest!”\n", "7 Ja nõnda sündis: Jumal tegi laotuse \n", "ja lahutas veed, mis olid laotuse all, vetest, mis olid laotuse peal.\n", "8 Ja Jumal nimetas laotuse taevaks. \n", "Siis sai õhtu ja sai hommik - teine päev.\n", "9 Ja Jumal ütles: „Veed kogunegu \n", "taeva all ühte paika, et kuiva näha oleks!” Ja nõnda sündis.\n", "10 Ja Jumal nimetas kuiva pinna maaks \n", "ja veekogu ta nimetas mereks. Ja Jumal nägi, et see oli hea.'''\n", "\n", "print(txt.replace('Jumal', 'Saatan'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 21:**\n", "\n", "Eemalda või lõika välja (slice out) lausest \"`Juulius Tipikas on igavene tudeng.`\" nimi \"`Tipikas`\".\n", "\n", "Oodatav tulemus: `Juulius on igavene tudeng.` või `'Juulius on igavene tudeng.'`" ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Juulius on igavene tudeng.'" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'Juulius Tipikas on igavene tudeng.'.replace(' Tipikas', '')" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Juulius on igavene tudeng.\n" ] } ], "source": [ "a = 'Juulius Tipikas on igavene tudeng.'\n", "print(a[:7] + a[15:])" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Juulius on igavene tudeng.\n" ] } ], "source": [ "a = 'Juulius Tipikas on igavene tudeng.'\n", "print(a.split()[0] + ' ' + a.split()[2]+ ' ' + a.split()[3]+ ' ' + a.split()[4])" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Juulius on igavene tudeng.\n" ] } ], "source": [ "txt = 'Juulius Tipikas on igavene tudeng.'\n", "algus = txt.index('Tipikas') - 1\n", "lopp = txt.index('Tipikas') + len(txt.split()[1]) # len on sisseehitatud funktsioon.\n", "print(txt[:algus] + txt[lopp:])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 22:**\n", "\n", "Järjesta listi `[8, 3, 7, 55, 3, 2, 1, 0, 8, 5, 3, 33, 22]` elemendid kasvas ja kahanevas järjekorras." ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0, 1, 2, 3, 3, 3, 5, 7, 8, 8, 22, 33, 55]\n", "[55, 33, 22, 8, 8, 7, 5, 3, 3, 3, 2, 1, 0]\n" ] } ], "source": [ "lst = [8, 3, 7, 55, 3, 2, 1, 0, 8, 5, 3, 33, 22]\n", "lst.sort() # IN PLACE meetod, meetodil puudub lausend return.\n", "print(lst)\n", "\n", "lst.sort(reverse=True)\n", "print(lst)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 23:**\n", "\n", "Loo sõnastik mis seob nädalapäevad nenede ühetäheliste lühenditega:\n", "```\n", "E --> esmaspäev\n", "T --> teisipäev\n", "K --> kolmapäev\n", "```\n", "jne.\n", "\n", "Seejärel kustuta võtmesõnale `T` vastav sissekanne." ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'E': 'esmaspäev', 'T': 'teisipäev', 'K': 'kolmapäev', 'N': 'neljapäev', 'R': 'reede', 'L': 'laupäev', 'P': 'pühapäev'}\n" ] } ], "source": [ "nädal = {\n", " 'E':'esmaspäev',\n", " 'T':'teisipäev',\n", " 'K':'kolmapäev',\n", " 'N':'neljapäev',\n", " 'R':'reede',\n", " 'L':'laupäev',\n", " 'P':'pühapäev'\n", "}\n", "\n", "print(nädal) # Kontrollin." ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'E': 'esmaspäev', 'K': 'kolmapäev', 'N': 'neljapäev', 'R': 'reede', 'L': 'laupäev', 'P': 'pühapäev'}\n" ] } ], "source": [ "del nädal['T']\n", "\n", "print(nädal) # Kontrollin." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 24:**\n", "\n", "Defineeri kolm hulka:\n", "```\n", "h1 = {1, 2, 3}\n", "h2 = {3, 4, 5}\n", "h3 = {3, 6, 7}\n", "```\n", "Leia nende ühend (`union`) ja ühisosa (`intersection`)." ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ühend on {1, 2, 3, 4, 5, 6, 7} ja ühisosa on {3} .\n" ] } ], "source": [ "h1 = {1, 2, 3}\n", "h2 = {3, 4, 5}\n", "h3 = {3, 6, 7}\n", "\n", "r1 = h1.union(h2, h3)\n", "r2 = h1.intersection(h2, h3)\n", "\n", "print('Ühend on', r1, 'ja ühisosa on', r2, '.')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 25:**\n", "\n", "Sisesta konsooli `[[]]*3`, seleta lahti saadud tulemus.\n", "\n", "Vihje: Võrdle tulemust sisendiga `[2]*3`." ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[2, 2, 2]" ] }, "execution_count": 78, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[2]*3 # Võrdluseks." ] }, { "cell_type": "code", "execution_count": 79, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[[], [], []]" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[[]]*3 # Tegu on loendiga mis sisaldab tühje loendeid." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 26:**\n", "\n", "Defineeri kaks ühe elemendiga hulka: `set_1 = {1}` ja `set_2 = {1}`. Leia esimese hulga erinevus teisest, kasutades meetodit `difference`. Mida tähendab saadud tulemus?\n", "\n", "Vihje: Ülesanne kattub osaliselt Ülesandega 9." ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "set()" ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ "set_1 = {1}\n", "set_2 = {1}\n", "\n", "set_1.difference(set_2) # Esimeses hulgas pole midagi mida pole teises hulgas, tulemuseks on tühi hulk." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 27:**\n", "\n", "Eelmises ülesandes lahendatud probleemi saab lahendada kasutades operaatorit `-` (operaator on kontekstitundlik ehk polümorfne). Proovi seda teha. Kas sellist tehet on võimalik kasutada tühja hulga loomiseks?" ] }, { "cell_type": "code", "execution_count": 81, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "set()\n" ] } ], "source": [ "empty_set = {1} - {1}\n", "print(empty_set) # Jah, on küll." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 28:**\n", "\n", "Interpreteeri allolev kood:\n", "```python\n", "my_set = {1, 2, 3}\n", "my_set.update({4, 2, 1, 3})\n", "print(my_set) \n", "```\n", "Tulemuseks peaksid saama `{1, 2, 3, 4}`. Miks lisati ainult `4` ja teisi numbreid ei lisatud?" ] }, { "cell_type": "code", "execution_count": 82, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{1, 2, 3, 4}\n" ] } ], "source": [ "my_set = {1, 2, 3}\n", "my_set.update({4, 2, 1, 3})\n", "print(my_set) # Hulk on unikaalsete elementide kogum." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 29:**\n", "\n", "Interpreteeri allolev kood:\n", "```python\n", "my_lst = [1, 2]\n", "my_lst.append(my_lst)\n", "print(my_lst)\n", "```\n", "Tulemuseks peaksid saama `[1, 2, [...]]`. Mida sellisest väljundist arvata? " ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2, [...]]\n" ] } ], "source": [ "my_lst = [1, 2]\n", "my_lst.append(my_lst)\n", "print(my_lst) # Interpretaator püüab lõputut rekursiooni hallata." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.0" } }, "nbformat": 4, "nbformat_minor": 4 }