{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Praktikum 3\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 16.09.2024.
\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 1:**\n", "\n", "Teisenda list `lst = ['H', 'e', 'l', 'l', 'o', None]` ennikuks ja hulgaks. Kontrolli kas loodud andmetüübi esindajad sisaldavad tühimärki (`None`)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 2:**\n", "\n", "Teisenda sõne `'Hello Python!'` listiks." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 3:**\n", "\n", "Defineeri lause: `\"Parim oma põllu uudseviljast vii Issanda, oma Jumala kotta! Ära keeda kitsetalle ta ema piimas!\"`. Leia mitmest erinevast tähemärgist koosneb eelmainitud lause.\n", "\n", "1) Ignoreeri tõstutundlikust (suur, väike täht).\n", "2) Ära ignoreeri tõstutundlikust.\n", "\n", "Tähemärkide loendamiseks kasuta sisseehitatud funktsioone.\n", "\n", "Vastused:\n", "1) 24 mitte 21 või 95.\n", "2) 21 mitte 24 või 95." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 4:**\n", "\n", "Leia:\n", "\n", "1. $(-1 + 3{\\rm i})^2 = (-1 + 3{\\rm i}) \\cdot (-1 + 3{\\rm i})$\n", "2. $\\sqrt{-1}$\n", "3. ${\\rm i}^2$\n", "4. ${\\rm i}^3$\n", "5. $(2 {\\rm i})^2$\n", "6. $(2 {\\rm i})^3$\n", "7. ${\\rm Im}({\\rm i}^3)$\n", "8. $(3 + 2{\\rm i}) + (1 + 7{\\rm i}) \\cdot (3 + 2{\\rm i})$\n", "\n", "Vastused ja oodatav väljund konsoolis:\n", "\n", "| | 1. | 2. | 3. | 4. | 5. | 6. | 7. | 8. |\n", "|:-------:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|\n", "| Algebra |$-8-6{\\rm i}$| ${\\rm i}$ | $-1$ | $-{\\rm i}$ | $-4$ | $-8{\\rm i}$ | $-1$ | $-8+25{\\rm i}$ |\n", "| Konsool | (-8-6j) | (6.123233995736766e-17+1j) | (-1+0j) | (-0-1j) | (-4+0j) | (-0-8j) | -1.0 | (-8+25j) |" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# 1." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# 2." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# 3." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# 4." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# 5." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# 6." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# 7." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# 8." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 5:**\n", "\n", "Leia:\n", "\n", "$$\\frac{11001000_2 \\cdot 310_8 + 5A3_{16}}{41443_{10}}$$\n", "\n", "Lisaks leia etteantud arvude väärtused kümnendsüsteemis ehk teisenda arvud kümnenedsüsteemi.\n", "\n", "Vastused: $1_{10}$ ja $11001000_2 = 200_{10}$, $310_8 = 200_{10}$, $5A3_{16} = 1443_{10}$." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 6:**\n", "\n", "Teisenda arv $111010110111100110100010101_{2}$ kaheksandsüsteemi, kümnendsüsteemi ja kuueteistkümnendiksüsteemi.\n", "\n", "Vastused ja oodatav tulemus konsoolis:\n", "\n", "| | Kaheksandsüsteem | Kümnendsüsteem | Kuueteistkümnendiksüsteem |\n", "|:-----:|:-------------:|:----------------:|:--------------:|\n", "|Number | $726746425_8$ | $123456789_{10}$ | $75BCD15_{16}$ |\n", "|Konsool| 0o726746425 | 123456789 | 0x75bcd15 |" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 7:**\n", "\n", "Kas võrratus $2B1_{16} < 777_{8}$ on tõene või väär?\n", "\n", "Vastus: Väär." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 8:**\n", "\n", "Kirjuta \"Hello World!\" programm, kasuta lausendit `def`." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 9:**\n", "\n", "Kirjuta programm mis leiab täisarvu $x$ vastavalt järgmisele funktsioonile:\n", "$$y = f(x) = -x - 1.$$ \n", "\n", "Näide: Arvule `1` vastab `-2`." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 10:**\n", "\n", "Lisa eelmises ülesandes loodud funktsioonile docstring (minimaalne näide)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 11:**\n", "\n", "Kirjuta programm mis ei kasuta algebra operaatoreid (`+`, `-`, `*`, jne.). Programm peab leidma täisarvu vastavalt järgmisele valemile:\n", "$$x_{\\rm tulem} = -x_{\\rm sisend} - 1,$$\n", "kus $x_{\\rm tulem}$ ja $x_{\\rm sisend}$ on täisarvud. \n", "\n", "Näide: Arvule `1` vastab `-2`." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 12:**\n", "\n", "Kirjuta programm mis ei kasuta algebra operaatoreid (`+`, `-`, `*`, `**`, jne.). Programm peab leidma täisarvu vastavalt järgmisele funktsioonile:\n", "$$f(x, n) = 2^n \\cdot x,$$\n", "kus $x$ ja $n = 2$ on täisarvud. \n", "\n", "Näide: Arvule $x = 5$ vastab $20$." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 13:**\n", "\n", "Kirjuta funktsioon `to_decimal` mis leiab neljale etteantud biti väärtusele vastava positiivse kümnendsüsteemi täisarvu.\n", "\n", "Näide: Väljakutse `to_decimal(1, 0, 0, 1)` väljastab `9`." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 14:**\n", "\n", "Loo ja prindi konsooli list (loend) mis sisaldab kõiki positiivseid paarisarve 0 ja 500 (500 kaasa arvatud) vahel." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 15:**\n", "\n", "Loo funktsioon mis juurib etteantud arvu." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 16:**\n", "\n", "Defineeri funktsioon mis leiab kolme arvu ruutkeskväärtuse. Ruutkeskväärtus on defineeritud järgmiselt:\n", "\n", "$$ x_{\\rm rms} = \\sqrt{\\frac{x_1^2 + x_2^2 + x_3^2}{3}},$$\n", "kus $x_1$, $x_2$ ja $x_3$ on reaalarvud." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 17:**\n", "\n", "Loo funktsioon mis leiab kolme etteantud arvu ruutkeskväärtuse ja ruutkeskväärtuse juure." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 18:**\n", "\n", "Loo kaks funktsiooni mis leiavad kolme etteantud arvu ruutkeskväärtuse ja ruutkeskväärtuse juure: \n", "1) Esimene funktsioon väljastab tulemused loendisse.\n", "2) Teine funktsioon väljastab tulemused sõnaraamatusse mille võtmesõnad on `rkv` ja `juur`.\n", "\n", "Kasuta teisena loodud funktsiooni ja prindi konsooli võtmesõnale `juur` vastav väärtus (kolme arvu ruutkeskväärtuse juur)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 19:**\n", "\n", "Defineeri funktsioon/protseduur mis liidab, korrutab ja jagab kahte etteantud reaalarvu ning esitab tulemuse kujul:\n", "\n", "```\n", "Tulemus on:\n", " + = \n", " * = \n", " / = \n", "```\n", "\n", "kus ``'ed on esitatud viie komakoha täpsusega." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 20:**\n", "\n", "Näita, et arv `3` sisaldub listis `a`, kasuta `in` operaatorit.\n", "\n", "`a = [1, [2, [3, 4], 5, 6], 7, 8, 9]`" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 21:**\n", "\n", "Kirjuta Pythoni programm mis leiab ruutvõrrandi, mis on kujul:\n", "\n", "$$a x^2 + b x + c = 0,$$\n", "\n", "lahendid $x_\\pm$ etteantud koefitsentide $a \\ne 0$, $b$ ja $c$ korral. Kasuta ruutvõrrandi lahendit kujul:\n", "\n", "$$x_\\pm = \\frac{-b \\pm \\sqrt{b^2 - 4 a c}}{2 a}.$$" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 22:**\n", "\n", "Loo funktsioon/protseduur mis leiab etteantud täisarvu paarsuse.\n", "\n", "Vihje: Täisarv $a$ on paaris kui selle arvu kahega jagamise jääk on null ning arv $a$ on paaritu kui selle kahega jagamise jääk pole null." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 23:**\n", "\n", "Kuidas näeb välja eelmises ülesandes kasutatud algoritmi vooskeemi?" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 24:**\n", "\n", "Loo muutuja `nimi` ja omista selle väärtuseks `Juulius`. Kirjuta programm mis tervitab Juuliust ja tema kolme sõpra nimepidi ja tundmatute nimede puhul teavitab: `Ma ei tea kes sa oled!`. Veendu, et su programm töötab.\n", "\n", "Juuliuse sõprade nimed on järgmised: `Fred`, `Mari` ja `Adolf`.\n", "\n", "Kasuta nii `if`-`elif`-`else` kui ka `if`-`else` konstruktsioone (kaks lahendust)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 25:**\n", "\n", "Kirjuta funktsioon/protseduur mis järjestab sellele etteantud listis olevad arvud kasvavas järjekorras. Kasuta listi `lst = [3, 2, 1]`. Kasuta listi meetodeid." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ülesanne 26:**\n", "\n", "Kontrolli kas Pythoni interpretaator toetab numbrite sisestamist kujul:\n", "- `1_200_300.01` (arv $1\\,200\\,300.01$)\n", "- `0.000_000_2` (arv $0.000\\,000\\,2 = 2 \\cdot 10^{-7}$)\n", "- `1E5` (arvu standardkuju $1 \\cdot 10^5 = 100\\,000$)\n", "- `1.23e-10` (arvu standardkuju $1.23 \\cdot 10^{-10} = 0.000\\,000\\,000\\,123$)" ] }, { "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 }