Kuigi Python toetab mitut programmeerimise paradigmat, on neist kõige enam rõhutatud just objektorienteeritud programmeerimise (OOP) paradigmat. Võib öelda, et OOP-i kasutamine tähendab programmikoodi teatud (kindlal) viisil organiseerimist. Selle lähenemise juures leiavad kasutamist mõisted nagu klass ja objekt, teemasse enam süvenedes ka kapseldamine, polümorfism, pärimine, modulaarsus, abstraktsioon. Viimaseid nimetatakse OOP tehnikateks.
Miks kasutada objektorienteeritud programmeerimist?:
Objektorienteeritud programmeerimise plussid:
- Programmi erinevateks osadeks jaotamine ja organiseeritus
- Vigade leidmine on kergem
- Korduvkasutus lühendab koodi pikkust
- Lihtsam teha koostööd teiste koodikirjutajatega
Klassid:
Klass on kasutaja määratletud andmestruktuur, mis seob andmeliikmed ja meetodid üheks üksuseks. Klass on objekti loomise plaan või koodimall. Klassi abil saate luua nii palju objekte kui soovite.
- Iga objekt kuulub mingisse klassi; ta on selle klassi isend (ingl.k. instance), näiteks isend Miisu kuulub klassi «kass».
- Sama klassi isenditel on samad isendi muutujad (ingl.k. instance variables) ja isendi meetodid (ingl.k. instance methods), isendi muutujate väärtused (olek) on üldjuhul erinevad.
- Klass võib sisaldada ka muutujaid ja meetodeid, mis ei ole seotud isenditega, nn. klassi muutujad (ingl.k. class variables) ja klassi meetodid (ingl.k. class methods). Klassi muutujad on ühised kõigile isenditele (tavaliselt konstandid, näiteks kassi jalgade arv — 4) ja neid saab kasutada nii klassi meetodites kui ka isendi meetodites. Klassi meetodeid kasutatakse vahel uute isendite loomise juures (isendiloome, ingl.k. instantiation), samuti on neist abi siis, kui me ei soovi meetodit objekti sisse kapseldada.
Github
Teema 9: Andmebaas
Teoreetiline osa: SQLite Python’is
Mis on andmebaas?
- Andmebaas on organiseeritud andmete kogum, mis võimaldab andmeid turvaliselt salvestada, muuta ja pärida.
- Andmebaasid on mõeldud suure hulga struktureeritud andmete efektiivseks haldamiseks.
SQLite
- SQLite on kerge ja manustatav (embedded) relatsiooniline andmebaas.
- Ei vaja eraldi serverit, kogu andmebaas salvestatakse ühes failis.
- Sobib hästi väiksematele rakendustele ja arenduseks, aga ka paljudele seadmetele ja süsteemidele.
- On tasuta ja avatud lähtekoodiga.
SQLite ja Python
- Pythonis saab SQLite’ga töötamiseks kasutada sisseehitatud
sqlite3moodulit. - See moodul võimaldab luua ühendusi andmebaasiga, täita SQL-päringuid ja hallata andmeid.
- SQLite toetab standardseid SQL käsklusi.
Peamised tegevused sqlite3 mooduliga:
- Ühenduse loomine andmebaasiga
conn = sqlite3.connect('andmebaas.db')- Kui andmebaasi fail puudub, siis see luuakse automaatselt.
- Kursori loomine
cursor = conn.cursor()- Kursori kaudu täidetakse SQL-päringud.
- SQL-päringute täitmine
- Tabeli loomine:
cursor.execute("CREATE TABLE ...") - Andmete lisamine:
cursor.execute("INSERT INTO ...") - Andmete pärimine:
cursor.execute("SELECT ...")
- Tabeli loomine:
- Andmete salvestamine
conn.commit()— muudatuste salvestamiseks andmebaasi.
- Ühenduse sulgemine
conn.close()
Näidis: töö SQLite andmebaasiga Pythonis
import sqlite3
# Ühenduse loomine andmebaasi failiga (näiteks 'andmebaas.db')
conn = sqlite3.connect('andmebaas.db')
# Kursori loomine
cursor = conn.cursor()
# Tabeli loomine (kui seda veel ei ole)
cursor.execute('''
CREATE TABLE IF NOT EXISTS kasutajad (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nimi TEXT NOT NULL,
vanus INTEGER
)
''')
# Andmete lisamine tabelisse
cursor.execute("INSERT INTO kasutajad (nimi, vanus) VALUES (?, ?)", ('Mari', 28))
cursor.execute("INSERT INTO kasutajad (nimi, vanus) VALUES (?, ?)", ('Jaan', 35))
# Muudatuste salvestamine
conn.commit()
# Andmete pärimine tabelist
cursor.execute("SELECT * FROM kasutajad")
andmed = cursor.fetchall()
# Andmete kuvamine
for rida in andmed:
print(rida)
Teema 8: Tkinter graafilise liidese loomiseks
8.1 Matplotlib – Graafikute loomine Pythonis
- Matplotlib on populaarne teek graafikute ja diagrammide joonistamiseks Pythonis.
- Võimaldab luua erinevat tüüpi graafikuid: joondiagrammid, tulpdiagrammid, sektordiagrammid jne.
- Põhifunktsioonid:
plot()– joonistab joondiagrammi.bar()– tulpdiagramm.scatter()– hajuvusdiagramm.
- Võimalus lisada telgede nimetusi, pealkirju, legendi.
- Tihti kasutatakse koos NumPy ja Pandasega andmete analüüsimiseks ja visualiseerimiseks.
8.2 Tkinter – Graafilise kasutajaliidese loomine Pythonis
- Tkinter on Pythonis sisseehitatud teek GUI (graafilise kasutajaliidese) loomiseks.
- Pakub lihtsaid vidinaid (widget’e), näiteks nuppe, sildid, sisestusväljad, aknad.
- Peamised komponendid:
- Root window – põhaken, mille sees teised vidinad asuvad.
- Vidinad nagu Button, Label, Entry, Frame.
- Võimalus määrata vidinate asukoht ja suurus erinevate meetoditega (
pack(),grid(),place()). - Sündmuste käsitlemine (nt nupu vajutamine) toimub callback-funktsioonide abil.
- Tkinter on hea lihtsate ja kiirete kasutajaliideste loomiseks.
СustomTkinter – kaasaegne laiendus Tkinterile
Mis on CustomTkinter?
- CustomTkinter on avatud lähtekoodiga Python’i teek, mis laiendab tavapärast Tkinterit.
- Selle eesmärk on pakkuda kaasaegset ja stiilset graafilist kasutajaliidest, mis näeb välja paremini ja professionaalsem.
- Sisaldab täiendavaid vidinaid ja kohandamisvõimalusi, mis puuduvad tavalisel Tkinteril.
Peamised omadused:
- Kaasaegne välimus: CustomTkinter toetab kaasaegseid UI elemente ja tumedat režiimi (dark mode).
- Kohandatav disain: lihtne muuta värve, fonte, nuppude kujundust, ääri, varjundeid.
- Täiendavad vidinad: lisaks tavapärastele Tkinteri vidinatele pakub:
- Custom nuppe (CustomButton)
- Lüliteid (Switch)
- Slaidereid (Slider)
- Protsessiriba (ProgressBar)
- Karusselleid ja palju muud
- Lihtne kasutada: API on sarnane Tkinterile, mistõttu olemasoleva Tkinteri koodi on kerge ümber teha.
Teema 7: Töö failidega
7.1 Töö txt failidega
- Tekstifailide lugemine ja kirjutamine on üks põhilisi tegevusi failidega töötamisel.
- Faili avamine: kasutatakse funktsioone nagu
open()erinevate režiimidega ('r'lugemiseks,'w'kirjutamiseks,'a'lisamiseks). - Faili sulgemine on oluline, et andmed õigesti salvestuksid ja ressursid vabastuksid.
- Näited:
- Failist lugemine rea kaupa.
- Andmete kirjutamine faili.
- Võimalik on kasutada ka kontekstihaldurit
with, mis automaatselt sulgeb faili.
7.2 E-kirja saatmine ja saamine
- E-kirjade saatmiseks kasutatakse tavaliselt SMTP (Simple Mail Transfer Protocol).
- E-kirjade saamiseks kasutatakse POP3 või IMAP protokolle.
- Protsess hõlmab autentimist, sõnumi loomist ja saatmist.
- Turvalisus on oluline: kasutatakse SSL/TLS krüpteerimist.
- Võimalik on lisada manusfaile ja saata HTML-formaadis kirju.
7.3 JSON’i kasutamine
- JSON (JavaScript Object Notation) on populaarne andmevorming andmete salvestamiseks ja vahetamiseks.
- JSON on lihtne lugeda nii inimestele kui ka masinatele.
- Pythonis kasutatakse JSON failide lugemiseks ja kirjutamiseks
jsonmoodulit. - Peamised funktsioonid:
json.load()– JSON andmete lugemine failist.json.dump()– andmete kirjutamine JSON formaadis faili.json.loads()jajson.dumps()– töötamine JSON andmetega stringina.
- JSON on tihti kasutusel API-de andmevahetuses.
Teema: 6 Sõnastikud
Sõnastikud
Sõnastik (ingl. dictionary) on andmestruktuur, mis salvestab andmeid võtme-väärtus paaridena. Erinevalt listidest, kus elemendid on indekseeritud numbritega, on sõnastiku elemendid indekseeritud võtmetega, mis võivad olla erinevat tüüpi (näiteks stringid, arvud, ennikud jne).
Sõnastiku loomine
Sõnastik luuakse looksulgude {} vahel, kus iga võti ja väärtus eraldatakse kooloniga :, ning erinevad paarid eraldatakse komadega.
õpilane ={ "nimi": "Mari", "vanus": 17, "klass": "11B"}õpilane ={ "nimi": "Mari", "vanus": 17, "klass": "11B"}
Pöördumine sõnastiku elementide poole
Sõnastiku elementidele saab pöörduda võtme abil:
2
print(õpilane["nimi"])
# Väljund: Mari
Kui võtit ei eksisteeri, annab see vea. Selle vältimiseks saab kasutada meetodit .get():
print(õpilane.get("aadress", "Puudub"))
# Väljund: Puudub
Sõnastiku muutmine
Saab lisada uusi võtme-väärtus paare või muuta olemasolevaid:
õpilane["hobi"] ="Jalgpall"
# Lisab uue võtme-väärtus
paariõpilane["vanus"] =18
# Muudab olemasolevat väärtust
Sõnastiku meetodid
.keys()– tagastab kõik võtmed.values()– tagastab kõik väärtused.items()– tagastab võtme-väärtus paarid ennikutena.pop(võti)– eemaldab võtme ja tagastab selle väärtuse.update(teine_sõnastik)– lisab teise sõnastiku elemendid
Näide:
print(õpilane.keys())
# Väljund:
dict_keys(['nimi', 'vanus', 'klass', 'hobi'])
print(õpilane.values())
# Väljund:
dict_values(['Mari', 18, '11B', 'Jalgpall'])
Sõnastiku läbimine
Sõnastiku elemente saab läbida tsüklis:
forvõti, väärtus inõpilane.items():
print(f"{võti}: {väärtus}")
Näide: Õpilaste andmebaas
õpilased ={ "Mari": {"vanus": 17, "klass": "11B"},
"Jaan": {"vanus": 16, "klass": "10A"},
"Liisa": {"vanus": 18, "klass": "12C"}}
print(õpilased["Jaan"]["klass"]) # Väljund: 10A
Sõnastikud on võimsad andmestruktuurid, mis võimaldavad efektiivselt hallata keerukamaid andmehierarhiaid.
Теeма: 5 Funktsioonid
5 Funktsioonid (Def)
Funktsioonid on programmeerimises põhilised ehitusplokid, mis võimaldavad koodi korduvat kasutamist ja paremat organiseerimist. Pythonis defineeritakse funktsioone def märksõnaga.
Põhiline funktsiooni süntaks
deffunktsiooni_nimi(parameetrid):
# funktsiooni keha returnväärtus
# pole kohustuslik
Näited
- Lihtne tervitusfunktsioon:
deftervita():
print("Tere maailm!")
tervita()
# väljund: Tere maailm!
- Funktsioon parameetritega:
defliida(a, b):
returna +bsumma =liida(3, 5)
print(summa)
# väljund: 8
- Funktsioon vaikimisi parameetriga:
defkorruta(a, b=2):
returna *bprint(korruta(4))
# väljund: 8
(kasutab b vaikimisi väärtust)
print(korruta(4, 3))
# väljund: 12
- Funktsioon suvalise arvu parameetritega:
defnäita_parameetreid(*args):
forarg inargs:
print(arg)
näita_parameetreid(1, "kaks", 3.0)
# prindib kõik argumendid eraldi ridadel
- Funktsioon, mis tagastab mitu väärtust:
defarvuta(a, b):
returna +b, a *bsumma, korrutis =arvuta(3, 4)
print(summa)
# 7print(korrutis) # 12
Olulised mõisted
- Parameeter – muutuja funktsiooni definitsioonis
- Argument – väärtus, mis antakse funktsioonile kui seda kutsutakse
- Tagastusväärtus – väärtus, mida funktsioon annab tagasi
returnkäsu abil - Kohalik muutuja – muutuja, mis on defineeritud funktsiooni sees ja on nähtav ainult seal
Funktsioonid on olulised koodi modulariseerimiseks ja keerukate ülesannete lihtsamaks lahendamiseks.
4. Järjendid (LIST)
Järjend (list) on Pythonis muudetav järjestik, mis võib sisaldada erinevat tüüpi elemente (numbrid, sõned, isegi teised järjendid). Järjendid on üks Pythoni kõige kasutatavamaid andmestruktuure.
1. Järjendi loomine
tühi_järjend =[]
# Tühi järjendarvud =[1, 2, 3, 4, 5] # Numbrite järjendsõned =["a", "b", "c"]
# Sõnede järjendsegajärjend =[1, "a", True, 3.14]
# Erinevate tüüpidega järjend
2. Juurdepääs elementidele
- Indeksid algavad
0-st. - Negatiivsed indeksid viitavad lõpust alates (
-1on viimane element).
numbrid =[10, 20, 30, 40, 50]
print(numbrid[0])
# 10 (esimene element)
print(numbrid[-1])
# 50 (viimane element)
3. Põhimeetodid ja operatsioonid
| Meetod/Operatsioon | Näide | Tulemus | Selgitus |
|---|---|---|---|
append(x) | numbrid.append(60) | [10, 20, 30, 40, 50, 60] | Lisab elemendi lõppu |
insert(i, x) | numbrid.insert(1, 15) | [10, 15, 20, 30, 40, 50] | Lisab elemendi indeksile i |
remove(x) | numbrid.remove(20) | [10, 30, 40, 50] | Eemaldab esimese elemendi x |
pop([i]) | numbrid.pop(2) | 30 (järjend: [10, 20, 40, 50]) | Eemaldab elemendi indeksil i (vaikimisi viimane) |
len() | len(numbrid) | 5 | Tagastab järjendi pikkuse |
sort() | numbrid.sort() | [10, 20, 30, 40, 50] | Sorteerib järjendi (kasvavalt) |
reverse() | numbrid.reverse() | [50, 40, 30, 20, 10] | Pöörab järjendi ümber |
+ | [1, 2] + [3, 4] | [1, 2, 3, 4] | Liidab kaks järjendit |
* | [0] * 3 | [0, 0, 0] | Korrutab järjendit |
4. Lõiked (slicing)
Süntaks: järjend[algus:lõpp:samm]
algus– kaasa arvatud (vaikimisi0).lõpp– mittekaasa arvatud (vaikimisi lõpp).samm– vahe indeksite vahel (vaikimisi1).
numbrid =[10, 20, 30, 40, 50]
print(numbrid[1:3])
# [20, 30]
(indeksid 1 kuni 2)
print(numbrid[:3])
# [10, 20, 30]
(algusest kuni 2)print(numbrid[::2])
# [10, 30, 50] (iga teine element)
5. Listide omadused
- Muudetavus (mutable):
numbrid[0] =99
# Muudab esimese elemendi 99-ks
2.Kordused (for-tsükkel):
forarv innumbrid:
print(arv *2)
3.Listide loome (list comprehension):
ruudud =[x **2forx innumbrid]
# [100, 400, 900, 1600, 2500]
6. Näited
1. Elementide lisamine ja eemaldamine
ostukorv =["õun", "piim"]ostukorv.append("leib")
# ["õun", "piim", "leib"]
ostukorv.pop(0)
# Eemaldab "õun" (tagastab selle)
2. Sorteerimine
hinded =[85, 90, 78, 92]
hinded.sort()
# [78, 85, 90, 92]
3. Listide kombineerimine
list1 =[1, 2]list2 =[3, 4]
kombineeritud =list1 +list2
# [1, 2, 3, 4]
Kokkuvõte
- Järjendid on muudetavad ja võivad sisaldada erinevaid andmetüüpe.
- Indeksid algavad
0-st, negatiivsed indeksid loevad lõpust. - Lõiked (slicing) võimaldavad valida osajärjendeid.
- Listide loome (list comprehension) on kiire viis uue järjendi loomiseks.
Kasulik andmete haldamisel, näiteks:
- Ostukorvide haldus
- Andmete sorteerimine ja filtreerimine
- Tsüklitega töötlemine
Teema 3 Kordused
3. Kordused (FOR, WHILE)
Pythonis kasutatakse kahte peamist kordusoperaatorit:
for– tegevuste korduv läbimine kindla arvu kordade või järjestiku elementidegawhile– korduv täitmine, kuni tingimus on tõene
1. FOR-tsükkel
Kasutatakse järjestike (nt listid, sõned) elementide läbimiseks.
Süntaks:
forelement injärjestik:
# tegevused iga elemendiga
Kasutusvõimalused:
- Arvude vahemikuga (
range()):
fori inrange(algus, lõpp, samm):
# tegevused
- Listi elementidega:
fori inrange(algus, lõpp, samm):
# tegevused
- Sõne tähemärkidega:
forelement inlist:
# töötle elementi
2. WHILE-tsükkel
Käivitub seni, kuni tingimus on tõene.
Süntaks:
whiletingimus:
# tegevused, mida korratakse
Olulised punktid:
- Lõpmatu tsükkel tekib, kui tingimus jääb alati tõeseks (vältimiseks kasuta
breakvõi muuda tingimust). breakkatkestab tsükli kohe.continuejätab praeguse iteratsiooni vahele ja liigub järgmise juurde.
3. Näited
FOR-tsükkel:
# Trüki arvud 1-5fori in range(1, 6): print(i)
WHILE-tsükkel:
# Trüki arvud 1-5 i =1 whilei <=5:
print(i)
i +=1
Lõpmatu tsükkel (WHILE):
whileTrue:
kasutaja_sisend =input("Sisesta 'stop' lõpetamiseks:
") ifkasutaja_sisend =="stop":
break
4. Võrdlus FOR vs WHILE
| FOR | WHILE |
|---|---|
| Teadaolev iteratsioonide arv | Tundmatu iteratsioonide arv |
| Sobib järjestike läbimiseks | Sobib tingimuslikele protsessidele |
| Automaatne lõpp | Vajab tingimuse muutmist või break |
5. Täiendavad võimalused
elsetsüklitega:
for i inrange(3):
print(i)else:
print("Tsükkel lõpetas") # Käivitatakse pärast tsüklit
- Pesastatud tsüklid:
fori inrange(3):
forj inrange(2):
print(i, j)
Kokkuvõte:
foron ideaalne kindla arvu korduste jaoks.whileon kasulik, kui korduste arv on teadmata või sõltub tingimusest.break/continueannavad täiendavat kontrolli tsüklite tööle.
Kasutatakse andmete töötlemisel, sisendi kontrollimisel ja korduvate ülesannete automatiseerimisel.
Теeма: 2 Valikud
Valikud – operaator if
Operaator if võimaldab programmil otsustada, millist koodi täita vastavalt tingimusele.
Põhilised konstruktsioonid:
Lihtne if
if tingimus:
# käivitatakse, kui tingimus on tõene
if koos else-ga
if tingimus:
# kui tingimus tõene
else:
# kui tingimus väär
Mitu tingimust (elif)
if tingimus1:
# esimene variant
elif tingimus2:
# teine variant
else:
# kui ükski tingimus ei kehti
Loogilised operaatorid (and, or, not)
if tingimus1 and tingimus2: # mõlemad peavad kehtima
if tingimus1 or tingimus2: # vähemalt üks peab kehtima
if not tingimus: # eitus
Üherealine if (ternary operaator)
tulemus = väärtus1 if tingimus else väärtus2
Pesastatud if
if tingimus1:
if tingimus2:
# mõlemad tingimused kehtivad
Olulised märkused:
- Tingimus peab tagastama
TruevõiFalse. - Taane (
indent) määrab, milline kood kuulubif-lause alla. elifjaelseon valikulised.
Kasutatakse olukordade hargnemiseks programmi töös.
Teema: 1 Põhiteadmised
Pythoni põhiteadmised
1. Paigaldamine ja käivitamine
- Pythoni saab alla laadida ametlikult kodulehelt.
- Töökeskkonnana võib kasutada:
- IDLE (Pythoniga kaasas)
- VS Code (laiendusega)
- PyCharm (spetsialiseeritud IDE)
- Jupyter Notebook (andmeteaduseks)
2. Põhisüntaks
print("Tere, maailm!") # Teksti väljastamine
x = 10 # Muutuja defineerimine
y = 5
print(x + y) # Liitmine
3. Andmetüübid
- Täisarvud (
int) –10,-5 - Ujukomaarvud (
float) –3.14,-0.001 - Sõned (
str) –"Tere",'Python' - Loendid (
list) –[1, 2, 3] - Ennikud (
tuple) –(1, 2, 3) - Sõnastikud (
dict) –{"nimi": "Mati", "vanus": 25} - Muu (
bool,set, …)