Programmeerimise ajalugu
- Alguses kirjutati koodi nullide ja ühtedena (masinkood).
- Hiljem tulid lihtsamad keeled: Assembler, C, Java, Python.
- Tänapäeval kasutatakse kõrgkeeli, mis on inimesele arusaadavad.
Süntaks (Syntax)
- Süntaks = reeglid, kuidas koodi õigesti kirjutada.
- Vale süntaks → viga (
SyntaxError).
Näited:
print("Tere")
a = 5
if a > 3:
print("Suurem kui 3")
Muutujad (Variables)
- Muutuja on nimega väärtus.
Näited:
nimi = "Mari" # tekst
vanus = 17 # arv
summa = 5 + 3
1.Teema: Lineaarsed programmid
Mis on lineaarne programm?
Lineaarne programm on lihtne programm, mis täidab käske järjest, ühtki haru ega kordust pole.
Kõik käsud toimuvad üksteise järel, ülalt alla – nagu retsept.
Näide:
nimi = input("Sisesta nimi: ")
vanus = int(input("Sisesta vanus: "))
print("Tere, " + nimi)
print("Sa oled " + str(vanus) + " aastat vana.")
Kokkuvõte:
- Lineaarne = otse järjest tehtavad käsud
- Ei ole korduseid (
for,while) ega tingimusi (if) - Sobib väga lihtsate programmide jaoks
2.Teema: Valikud (if, elif, else)
Mis on valik?
Valik tähendab, et programm otsustab, mida teha, olukorra järgi.
Kasutatakse võtmesõnu:if – kui tingimus on tõeneelif – kui eelmine ei sobinud, proovi järgmistelse – kui ükski tingimus ei sobinud
Näide:
vanus = int(input("Sisesta vanus: "))
if vanus < 18:
print("Oled alaealine.")
elif vanus < 65:
print("Oled täiskasvanu.")
else:
print("Oled pensionär.")
Kokkuvõte:
ifkontrollib tingimustelifkontrollib järgmist tingimust, kui eelmine ei sobinudelsetehakse, kui ükski eelmine ei sobinud
3.Teema: Kordused (tsüklid)
Mis on kordus?
Kordus (ehk tsükkel) võimaldab sama koodi mitu korda järjest käivitada.
for tsükkel
Kui tead, mitu korda soovid midagi teha.
for i in range(5):
print("Tere")
while tsükkel
Kuni tingimus on tõene, kordub.
i = 0
while i < 5:
print("Hei")
i += 1
Kokkuvõte:
| Tsükkel | Kasutus |
|---|---|
for | Teatud arv kordi |
while | Kuni tingimus kehtib |
4. Teema: Listid (Loendid)
Mis on list?
List (ehk loend) on andmetüüp, mis hoiab mitut väärtust korraga.
Näide:
puuviljad = ["õun", "banaan", "pirn"]
print(puuviljad[0]) # prindib "õun"
Mida saab listiga teha?
- Elemente lisada:
puuviljad.append("apelsin")
Elementide arvu teada:
len(puuviljad)
Tsükliga läbi käia:
for puuvili in puuviljad:
print(puuvili)
Kokkuvõte:
List on nagu karp, kuhu saab panna palju asju ja hiljem neid kasutada või muuta.
5. Pythoni funktsioonid
str()
| 1234 | # str() muudab muutuja stringiksa ="Minu arv on "b =10c =a +str(b) |
upper()
| 1234 | a ="artjom"print(a) # artjoma.upper()print(a) # ARTJOM |
lower()
| 1234 | a ="Minu Nimi On Artjom"print(a) # Minu Nimi On Artjoma.lower()print(b) # minu nimi on artjom |
capitalize()
| 1234 | a ="artjom põldsaar"print(a) # artjom põldsaara.capitalize()print(a) # Artjom põldsaar |
date.today()
| 12 | tana =date.today()print(f"Täna on {tana}") # Täna on 2025-01-27 |
date()
| 123 | aastaLopp =date(tana.year, 12, 31)print(f"Aasta lõpp on {aastaLopp}") # Aasta lõpp on 2025-12-31 |
strftime()
| 1234567891011 | # 27/12/2022tana =tana.strftime("%d/%m/%Y")# December 27, 2022tana =tana.strftime("%B %d, %Y")# 12/27/22tana =tana.strftime("%m/%d/%y")# Dec-27-2022tana =tana.strftime("%b-%d-%Y") |
monthrange(a, b)
| 1234 | res =calendar.monthrange(tana.year, tana.month)paevadKuus =res[1]print(f"Kuus on {paevadKuus} päeva")# Kuus on 31 päeva |
round(arv, punktid)
| 12 | a =3.1458139287print(round(a, 2)) # 3.15 |
| isalnum() | Returns True if all characters in the string are alphanumeric |
| isalpha() | Returns True if all characters in the string are in the alphabet |
| isascii() | Returns True if all characters in the string are ascii characters |
| isdecimal() | Returns True if all characters in the string are decimals |
| isdigit() | Returns True if all characters in the string are digits |
| isidentifier() | Returns True if the string is an identifier |
| islower() | Returns True if all characters in the string are lower case |
| isnumeric() | Returns True if all characters in the string are numeric |
| isprintable() | Returns True if all characters in the string are printable |
| isspace() | Returns True if all characters in the string are whitespaces |
| istitle() | Returns True if the string follows the rules of a title |
| isupper() | Returns True if all characters in the string are upper case |
Saada e-kiri Pythoniga
Samm 1: Impordi e-posti moodulid
import smtplib
from email.message import EmailMessage
Samm 2: Konfigureeri e-posti päise väljad
message = EmailMessage()
email_subject = "Email test from Python"
sender_email_address = "your_email@gmail.com"
receiver_email_address = "receiver_email@address.com"
message['Subject'] = email_subject
message['From'] = sender_email_address
message['To'] = receiver_email_address
Samm 3: Konfigureeri e-kirja keha
message.set_content("Hello from Python!")
Samm 4: Konfigureeri e-posti server
email_smtp = "smtp.gmail.com"
# set smtp server and port
server = smtplib.SMTP(email_smtp, '587')
email_smtp = "smtp.gmail.com"
# set smtp server and port
server = smtplib.SMTP(email_smtp, '587')
# identify this client to the SMTP server
server.ehlo()
# secure the SMTP connection
server.starttls()
Samm 5: e-kirja saatmine
sender_email_address = "your_email@gmail.com"
email_password = "your_email_password"
# login to email account
server.login(sender_email_address, email_password)
# send email
server.send_message(message)
# close connection to server
server.quit(
Samm 6: Kõik kokku panemine
import smtplib
from email.message import EmailMessage
email_subject = "Email test from Python"
sender_email_address = "your_email@gmail.com"
receiver_email_address = "receiver_email@address.com"
email_smtp = "smtp.gmail.com"
email_password = "your_email_password"
# create an email message object
message = EmailMessage()
# configure email headers
message['Subject'] = email_subject
message['From'] = sender_email_address
message['To'] = receiver_email_address
# set email body text
message.set_content("Hello from Python!")# set smtp server and port
server = smtplib.SMTP(email_smtp, '587')
# identify this client to the SMTP server
server.ehlo()
# secure the SMTP connection
server.starttls()
# login to email account
server.login(sender_email_address, email_password)
# send email
server.send_message(message)
# close connection to server
server.quit()
HTML-sisu saatmine e-postiga
<!DOCTYPE html>
<head>
</head>
<body>
<h1>Sending an HTML email from Python</h1>
<p>Hello there,</p>
<a href="https://inspirezone.tech/">Here's a link to an awesome dev
community!</a>
</body>
</html>
# create an email message object
message = EmailMessage()
# read file containing html
with open('message.html', 'r') as file:
file_content = file.read()
# add message content as html type
message.set_content(file_content, subtype='html')
Pildi saatmine e-postiga manusena
with open('image.jpg', 'rb') as file:
image_data = file.read()
import imghdr
# create an email message object
message = EmailMessage()
# open image as a binary file and read the contents
with open('image.jpg', 'rb') as file:
image_data = file.read()
message.set_content("Email from Python with image attachment")
# attach image to email
message.add_attachment(image_data, maintype='image',
subtype=imghdr.what(None, image_data))
6.Teema: Sõnastikud (Dictionaries)
Mis on sõnastik?
Sõnastik (inglise keeles dictionary) on andmetüüp, kus igal väärtusel on oma nimi ehk võti (key).
See on nagu sõnastik päriselus: igal sõnal (võti) on oma tähendus (väärtus).
Näide:
inimene = {
"nimi": "Mari",
"vanus": 17,
"linn": "Tallinn"
}
"nimi" on võti → "Mari" on väärtus
"vanus" → 17
"linn" → "Tallinn"
Kuidas väärtust saada?
print(inimene["nimi"]) # prindib: Mari
Kuidas uut lisada?
inimene["hobi"] = "joonistamine"
Kuidas kõiki võtmeid ja väärtusi vaadata?
for võti, väärtus in inimene.items():
print(võti, ":", väärtus)
Kokkuvõte:
Sõnastik on nagu kast nimega siltidega, kus igal asjal on oma nimi. Väga kasulik, kui on vaja andmeid selgelt korraldada (näiteks inimese andmed).
7.Teema: Failidega töö (Töö tekstifailidega)
Mis see tähendab?
Failidega töö tähendab, et programm loeb või kirjutab andmeid faili – näiteks .txt faili.
Faili kirjutamine (salvestamine)
with open("minu_fail.txt", "w") as f:
f.write("Tere maailm!")
"w" tähendab write – kirjutab faili (kustutab vana sisu).
with hoolitseb, et fail suletakse pärast kasutamist.
Faili lugemine
with open("minu_fail.txt", "r") as f:
sisu = f.read()
print(sisu)
"r" tähendab read – loetakse faili sisu.
Rea kaupa lugemine
with open("minu_fail.txt", "r") as f:
for rida in f:
print(rida.strip())
.strip() eemaldab tühikud ja reavahetused lõpus.
Faili sisu lisamine (mitte kustutamine)
with open("minu_fail.txt", "a") as f:
f.write("\nUus rida")
"a" tähendab append – lisab lõppu, ei kustuta vana sisu.
Kokkuvõte:
| Režiim | Tähendus |
|---|---|
"r" | lugemine |
"w" | kirjutamine (uus) |
"a" | lisamine lõppu |
8.1.Teema: Graafikute ja diagrammide loomine (Pythonis)
Mis see tähendab?
Graafikute ja diagrammide abil saame andmeid visuaalselt esitada – näiteks joonistada tulpdiagrammi või joondiagrammi.
Selleks kasutatakse sageli matplotlib teeki (raamatukogu).
Tulpdiagramm
import matplotlib.pyplot as plt
puuviljad = ["Õun", "Banaan", "Pirn"]
kogused = [10, 7, 5]
plt.bar(puuviljad, kogused)
plt.title("Puuviljade kogused")
plt.xlabel("Puuviljad")
plt.ylabel("Kogus")
plt.show()
plt.bar(...) – joonistab tulpdiagrammi.
plt.show() – näitab pilti.
Joondiagramm
päevad = ["E", "T", "K", "N", "R"]
temperatuurid = [18, 20, 19, 22, 21]
plt.plot(päevad, temperatuurid)
plt.title("Temperatuur nädalas")
plt.xlabel("Päev")
plt.ylabel("°C")
plt.show()
Sektordiagramm
ajakasutus = ["Magamine", "Õppimine", "Mängimine"]
tunnid = [8, 6, 10]
plt.pie(tunnid, labels=ajakasutus, autopct="%1.1f%%")
plt.title("Minu päev")
plt.show()
Kokkuvõte:
| Diagramm | Funktsioon | Milleks sobib? |
|---|---|---|
plt.bar() | Tulpdiagramm | Võrdlemine |
plt.plot() | Joondiagramm | Näitamine ajas |
plt.pie() | Sektordiagramm | Protsentuaalne jaotus |
8.2.Teema: Graafiline liides (Tkinter, CustomTkinter jne)
Mis on graafiline liides?
Graafiline liides (GUI – Graphical User Interface) tähendab, et kasutaja suhtleb programmiga hiire ja nuppude kaudu, mitte ainult tekstiga.
Pythonis saab graafilist liidest teha näiteks Tkinteri abil.
Lihtne Tkinteri näide
import tkinter as tk
aken = tk.Tk()
aken.title("Minu esimene aken")
nupp = tk.Button(aken, text="Vajuta mind!", command=lambda: print("Tere!"))
nupp.pack()
aken.mainloop()
Selgitus:
tk.Tk()– loob akna.Button(...)– loob nupu.command=...– ütleb, mida teha, kui nuppu vajutatakse.pack()– paigutab nupu aknasse.mainloop()– hoiab akna lahti.
Väljaga näide
import tkinter as tk
def tervita():
nimi = sisend.get()
silt.config(text=f"Tere, {nimi}!")
aken = tk.Tk()
aken.title("Tervitaja")
sisend = tk.Entry(aken)
sisend.pack()
nupp = tk.Button(aken, text="Tervita!", command=tervita)
nupp.pack()
silt = tk.Label(aken, text="")
silt.pack()
aken.mainloop()
CustomTkinter – ilusam liides
Kui tahad ilusamat disaini, võib kasutada customtkinter teeki.
pip install customtkinter
Näide:
import customtkinter as ctk
aken = ctk.CTk()
aken.title("Kaunis aken")
nupp = ctk.CTkButton(aken, text="Vajuta mind")
nupp.pack(pady=10)
aken.mainloop()
Kokkuvõte:
| Teek | Milleks sobib? |
|---|---|
tkinter | Lihtne ja klassikaline liides |
customtkinter | Modernsem ja ilusam välimus |
9.Teema: OOP (Objektorienteeritud programmeerimine)
Mis on OOP?
Objektorienteeritud programmeerimine (OOP) on programmi ülesehitamise viis, kus kood jagatakse objektideks ja klassideks.
See muudab programmi loogilisemaks, korduvkasutatavaks ja lihtsamini hallatavaks.
Miks kasutada OOP-i?
- ✅ Loogiline jaotus osadeks – lihtsam mõista
- ✅ Korduvkasutus – vähem dubleerimist
- ✅ Vigade leidmine on lihtsam
- ✅ Lihtsam koostöö meeskonnas
- ✅ Kood on skaleeritavam ja hooldatavam
Põhimõisted
| Mõiste | Selgitus |
|---|---|
| Klass | Mall või plaan objektide loomiseks. Kirjeldab, millised omadused ja tegevused objektidel on. |
| Objekt | Klassist loodud isend – tal on omadused (muutujad) ja tegevused (meetodid). |
| Meetod | Funktsioon, mis kuulub klassi ja kirjeldab objekti käitumist. |
| Muutuja | Info (andmed), mis on seotud objektiga. |
| Isend | Üks konkreetne objekt, mis on loodud klassist. |
Klass ja konstruktor
Klass on mall, objekt on reaalne asi:
class Dog:
def __init__(self, name):
self.name = name
koer = Dog("Miisu")
__init__()on konstruktor – käivitatakse objekti loomisel.self.name– objekti muutuja.
Konstruktorite tüübid:
| Tüüp | Selgitus |
|---|---|
| Vaikekonstruktor | Luuakse automaatselt, kui konstruktorit pole |
| Parameetriteta | Ainult self, väärtusi ei anta |
| Parameetriline | Saab luua objekte erinevate väärtustega |
Pärimine (inheritance)
Pärimise abil saab üks klass teiselt üle võtta omadusi ja meetodeid.
class Loom:
def heli(self):
print("Tegelen heliga")
class Koer(Loom):
def heli(self):
print("Haugun")
k = Koer()
k.heli() # Haugun
Koer pärib Loom klassilt meetodi, aga kirjutab selle ümber.
See võimaldab vältida dubleerimist ja laiendada olemasolevaid klasse.
Koer pärib Loom klassilt meetodi, aga kirjutab selle ümber.
See võimaldab vältida dubleerimist ja laiendada olemasolevaid klasse.
__hind on privaatne – seda ei saa väljastpoolt otse muuta.
Selleks kasutatakse setter-meetodit.
Polümorfism (polymorphism)
Polümorfism tähendab, et eri klassidel võib olla sama-nimeline meetod, aga nad käituvad erinevalt.
class Ring:
def info(self):
print("Ringil pole nurki")
class Ristkülik:
def info(self):
print("Ristkülikul on 4 nurka")
def testi(kujund):
kujund.info()
testi(Ring()) # Ringil pole nurki
testi(Ristkülik()) # Ristkülikul on 4 nurka
Sama funktsioon (info) teeb erinevates klassides erinevaid asju.
See võimaldab kirjutada üldisemaid funktsioone, mis töötavad erinevate objektidega.
Abstraktsioon
Abstraktsioon tähendab, et kasutaja näeb ainult olulisemat osa funktsioonist või objektist, aga mitte selle sisemist toimimist.
from abc import ABC, abstractmethod
class Loom(ABC):
def maga(self):
print("Magan")
@abstractmethod
def heli(self):
pass
class Kass(Loom):
def heli(self):
print("Nurrun")
ABC ja @abstractmethod loovad abstraktse klassi.
Abstraktses klassis peab iga alamklass kindlasti määrama heli() meetodi.
Kasulik, kui tahame luua ühtse struktuuri, mida teised klassid järgivad.
Kokkuvõte
| Tehnika | Selgitus |
|---|---|
| Klass | Kirjeldab objekti omadusi ja käitumist |
| Objekt | Klassist loodud konkreetne asi |
| Kapseldamine | Peidab andmed ja kaitseb neid otse muutmise eest |
| Pärimine | Võimaldab võtta omadusi/methodid üle teistelt klassidelt |
| Polümorfism | Sama-nimeline meetod töötab erinevalt eri klassides |
| Abstraktsioon | Näitab ainult olulist osa, peidab tehnilist sisu |

