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 sqlite3 moodulit.
  • 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:

  1. Ühenduse loomine andmebaasiga
    • conn = sqlite3.connect('andmebaas.db')
    • Kui andmebaasi fail puudub, siis see luuakse automaatselt.
  2. Kursori loomine
    • cursor = conn.cursor()
    • Kursori kaudu täidetakse SQL-päringud.
  3. SQL-päringute täitmine
    • Tabeli loomine: cursor.execute("CREATE TABLE ...")
    • Andmete lisamine: cursor.execute("INSERT INTO ...")
    • Andmete pärimine: cursor.execute("SELECT ...")
  4. Andmete salvestamine
    • conn.commit() — muudatuste salvestamiseks andmebaasi.
  5. Ü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 json moodulit.
  • Peamised funktsioonid:
    • json.load() – JSON andmete lugemine failist.
    • json.dump() – andmete kirjutamine JSON formaadis faili.
    • json.loads() ja json.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

  1. Lihtne tervitusfunktsioon:
deftervita():
    print("Tere maailm!")
tervita()
  # väljund: Tere maailm!
  1. Funktsioon parameetritega:
defliida(a, b):
    returna +bsumma =liida(3, 5)
print(summa)
  # väljund: 8
  1. 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
  1. 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
  1. 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 return kä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 (-1 on 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/OperatsioonNäideTulemusSelgitus
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)5Tagastab 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 (vaikimisi 0).
  • lõpp – mittekaasa arvatud (vaikimisi lõpp).
  • samm – vahe indeksite vahel (vaikimisi 1).
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

  1. 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 elementidega
  • while – 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 break või muuda tingimust).
  • break katkestab tsükli kohe.
  • continue jä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

FORWHILE
Teadaolev iteratsioonide arvTundmatu iteratsioonide arv
Sobib järjestike läbimiseksSobib tingimuslikele protsessidele
Automaatne lõppVajab tingimuse muutmist või break

5. Täiendavad võimalused

  • else tsü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:

  • for on ideaalne kindla arvu korduste jaoks.
  • while on kasulik, kui korduste arv on teadmata või sõltub tingimusest.
  • break/continue annavad 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 (andornot)

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 True või False.
  • Taane (indent) määrab, milline kood kuulub if-lause alla.
  • elif ja else on 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 (boolset, …)