v1 python tutorial
TRANSCRIPT
-
Uvod u Python
Python minicourseRacunalne mreze i usluge
Odjel za matematiku 2012
-
Uvod u Python
Jezicne znacajke
Python je interpreterski, interaktivni programski jezik koji podrzava nekolikoprogramerskih paradigmi s naglaskom na citljiv kod.
Tvorac: Guido von RossumPrimjena: MIT, NASA, IBM, Google, . . .Licenca: open-source
Interpretacija medukoda - izvrsavanje naredbe po naredbu Jezik visoke razine - pretpostavljeno podrzava ADT cista sintaksa relativno lagani prijelaz s pseudokoda na implementaciju podrzava nekoliko programerskih paradigmi (proceduralno programiranje, OOP,
funkcionalno programiranje, ...)
prosirivost (CPython, Jython, IronPython (.NET)) bogata biblioteka programa - Python Cheese Shop - PyPI.
-
Uvod u Python
Izvodenje python programa
2 nacina rada:
Interaktivni rad u konzolu se upisuju naredbe programskog jezika koje se odmahinterpretiraju (izvrsavaju).
1 Python 2.7 (r32 :88445 , Feb 20 2011, 21:29:02) [MSC v.1500 32 bit (Intel )] on win322 Type "copyright", "credits" or "license ()" for more information.3 >>> print "Hello World"
Skriptni rad Programi se spremaju u skripte a onda se kao Unix/Linux iliWindows skripte pozivaju iz sistemske linije.
1 python imeskripte.py
Ugradeni kod izvodenje Python koda u drugim programskim jezicima
-
Uvod u Python
Varijable i unos
U Pythonu nema ekplicitine deklaracije tipa varijable, interpreter na temeljuincijalizacije prepoznaje tip.
Ispis na konzolu: print naredba
Primjer (Hello, World!)
1 >>> print "Hello , World!"
Izraz za unos podataka s konzole: input naredba.
Primjer (Unos)Napisite program koji ce za uneseno ime napisati Dobrodosli, ime, u svijet Pythona.
1 #ime.py2 ime=raw_input("Unesite ime:") #ime3 print "Dobrodosli "+ime+" u svijet Pythona"45 python ime.py
-
Uvod u Python
Varijable i unos
U Pythonu nema ekplicitine deklaracije tipa varijable, interpreter na temeljuincijalizacije prepoznaje tip.
Ispis na konzolu: print naredba
Primjer (Hello, World!)
1 >>> print "Hello , World!"
Izraz za unos podataka s konzole: input naredba.
Primjer (Unos)Napisite program koji ce za uneseno ime napisati Dobrodosli, ime, u svijet Pythona.
1 #ime.py2 ime=raw_input("Unesite ime:") #ime3 print "Dobrodosli "+ime+" u svijet Pythona"45 python ime.py
-
Uvod u Python
Tipovi podataka
Osnovne tipove podataka Python predstavlja u objektima.
Kategorija Ime Opis
Prazno (None) NoneType null objekt
Brojevi IntType Cijeli brojFractionalType Razlomak
FloatType Realni broj s pom. zarezomComplexType Kompleksni broj
Nizovi StringType Niz znakova (string)UnicodeType Unicode (string)ListType Listina, popis ili listaTupleType n-teracXRangeType Vraceno iz xrange()BufferType Vraceno iz buffer()
Preslikavanje DictType Rjecnik
Klase, razredi ClassType Definicija klase
Instanca klase, objekt InstanceType Stvaranje instance klase
Datoteka FileType Datoteka - podaci na mediju
Moduli ModuleType Modul (skup objekata)
Primjer
1 2347# Cjelobrojni literal
2 13.514# Realni (Floating -point) literal
3 5.0J # Imaginarni literal4 hello
# String literal , niz znakova
1 [ 63, faks, 8.6 ] # Listina , lista ili popis2 ( 450, 320, 600 ) # n-terac3 { a:72, b:1.4 } # rjecnik
-
Uvod u Python
ADT
tipovi podataka vise razine (ADT) u Pythonu:
Liste (lists): [a,1,b,16] N-terci (tuples): (1,10,3) Rjecnici (dictionaries): {a:1,b:2,c:3} Skupovi (sets)
U Pythonu je definiran poveci broj operacija za rad sa spomenutim tipovima podataka.
-
Uvod u Python
Malo igre sa spomenutim tipovima podataka...
Razliciti tipovi literala.
1 >>> type("Python") # string literal2 3 >>> type (512)
# numericki literal
4 5 >>> k=2.178
# varijabla k
6 >>> type(k)7 8 >>> type ({ a:72, b:1.4 })9
10 >>> z=2+3j# varijabla z
11 >>> type(z)12
U Python 3 verziji postoji tip podataka razlomci:
1 import fractions2 x=fractions.Fraction (1,3) # 1/33 y=fractions.Fraction (1,2) #1/24 z=x+y # 5/6
Vrijednosti i funkcije iz modula:
1 >>>import math2 >>> print math.pi, math.sin (2.3)3 3.14159265359 0.745705212177
-
Uvod u Python
Operacije i operatori
Python podrzava vecinu operatora i operacija koji su podrzani u ostalim programskimjezicima:
1. aritmeticke operacije (+,, , /, . . .)2. operatori pridruzivanja (=,+ =, =, =, . . .)3. logicki operatori (x < y , x y , x >= y , x y , x! = y , x == y)
4. specijalizirane operacije na pojedinim tipovima podataka (ugradene metode uobjekte)
-
Uvod u Python
Operatori nad tipovima podataka:izraz,... String pretvorba
key:izraz,... Stvaranje rjecnika
[izraz,...] Stvaranje liste
(izrazr,...) Stvaranje n-terca ili jednostavne zagrade
f(izraz,...) Poziv funkcije
x[index1:index2] Kriska (slicing)
x[index] Indeksiranje (indexing)
x.attr Referenca atributa
x**y Eksponent (x na y potenciju)
x Bitwise NE (NOT)
+x, -x Unarni plus ili minus
x*y, x/y, x//y, x%y Mnozenje, dijeljenje, dijeljenje na cijeli broj, ostatak
x+y, x-y Zbajanje, oduzimanje
xy, xy Lijevi pomak, desni pomak
x&y Bitwise I (AND)
x y Bitwise eksluzivni ILI (XOR)xy Bitwise ILI (OR)
x < y, x y, x >= y, x y, x! = y, x == y Usporedbe
x is y, x is not y Provjera identiteta
x in y, x not in y Provjera clanstva
not x Bool-ov NE (NOT)
x and y Bool-ov I (AND)
x or y Bool-ov ILI (OR)
lambda arg,...: izraz Anonimna jednostavna funkcija
-
Uvod u Python
Primjeri
PrimjerNapisite Python program koji ce za unesene stranice trokuta a, b, c izracunati povrsinutog trokuta.
1 import math2 print("Racun za povrsinu trokuta ")3 a = input("a:") #pretpostavka: nejednakost trokuta4 b = input("b:")5 c=input("c:")67 s=(a+b+c)/28 print "povrsina trokuta je ",math.sqrt(s*(s-a)*(s-b)*(s-c))9 print "Opseg trokuta je ",a+b+c
PrimjerNapisite Python program koji ce sortirati unesenu listu brojeva pomocu ugradenefunkcije sort().
1 lista =[2,6,1,4,5,7]2 lista.sort()3 print lista
PrimjerPython program s pozdravom.
1 ime=input("Vase ime:")2 titula=input("titula:")34 print "Dobrodosli u svijet Pythona , %s %s" % (titula ,ime)
-
Uvod u Python
Primjeri
PrimjerNapisite Python program koji ce za unesene stranice trokuta a, b, c izracunati povrsinutog trokuta.
1 import math2 print("Racun za povrsinu trokuta ")3 a = input("a:") #pretpostavka: nejednakost trokuta4 b = input("b:")5 c=input("c:")67 s=(a+b+c)/28 print "povrsina trokuta je ",math.sqrt(s*(s-a)*(s-b)*(s-c))9 print "Opseg trokuta je ",a+b+c
PrimjerNapisite Python program koji ce sortirati unesenu listu brojeva pomocu ugradenefunkcije sort().
1 lista =[2,6,1,4,5,7]2 lista.sort()3 print lista
PrimjerPython program s pozdravom.
1 ime=input("Vase ime:")2 titula=input("titula:")34 print "Dobrodosli u svijet Pythona , %s %s" % (titula ,ime)
-
Uvod u Python
Primjeri
PrimjerNapisite Python program koji ce za unesene stranice trokuta a, b, c izracunati povrsinutog trokuta.
1 import math2 print("Racun za povrsinu trokuta ")3 a = input("a:") #pretpostavka: nejednakost trokuta4 b = input("b:")5 c=input("c:")67 s=(a+b+c)/28 print "povrsina trokuta je ",math.sqrt(s*(s-a)*(s-b)*(s-c))9 print "Opseg trokuta je ",a+b+c
PrimjerNapisite Python program koji ce sortirati unesenu listu brojeva pomocu ugradenefunkcije sort().
1 lista =[2,6,1,4,5,7]2 lista.sort()3 print lista
PrimjerPython program s pozdravom.
1 ime=input("Vase ime:")2 titula=input("titula:")34 print "Dobrodosli u svijet Pythona , %s %s" % (titula ,ime)
-
Uvod u Python
Primjeri
PrimjerNapisite Python program koji ce za unesene stranice trokuta a, b, c izracunati povrsinutog trokuta.
1 import math2 print("Racun za povrsinu trokuta ")3 a = input("a:") #pretpostavka: nejednakost trokuta4 b = input("b:")5 c=input("c:")67 s=(a+b+c)/28 print "povrsina trokuta je ",math.sqrt(s*(s-a)*(s-b)*(s-c))9 print "Opseg trokuta je ",a+b+c
PrimjerNapisite Python program koji ce sortirati unesenu listu brojeva pomocu ugradenefunkcije sort().
1 lista =[2,6,1,4,5,7]2 lista.sort()3 print lista
PrimjerPython program s pozdravom.
1 ime=input("Vase ime:")2 titula=input("titula:")34 print "Dobrodosli u svijet Pythona , %s %s" % (titula ,ime)
-
Uvod u Python
Primjeri
PrimjerNapisite Python program koji ce za unesene stranice trokuta a, b, c izracunati povrsinutog trokuta.
1 import math2 print("Racun za povrsinu trokuta ")3 a = input("a:") #pretpostavka: nejednakost trokuta4 b = input("b:")5 c=input("c:")67 s=(a+b+c)/28 print "povrsina trokuta je ",math.sqrt(s*(s-a)*(s-b)*(s-c))9 print "Opseg trokuta je ",a+b+c
PrimjerNapisite Python program koji ce sortirati unesenu listu brojeva pomocu ugradenefunkcije sort().
1 lista =[2,6,1,4,5,7]2 lista.sort()3 print lista
PrimjerPython program s pozdravom.
1 ime=input("Vase ime:")2 titula=input("titula:")34 print "Dobrodosli u svijet Pythona , %s %s" % (titula ,ime)
-
Uvod u Python
Kontrolne strukture
Kontrolne strukture koje podrzava Python:
if . . . then . . . else1 if uvjet(i):2 naredba(e)3 elif uvjet(i):4 naredba(e)5 elif uvjet(i):6 naredba(e)7 ...8 else uvjet(i):9 naredba(e)
Ponavljaj uz uvjet . . .
While . . .1 while izraz:2 naredba(e)
Iterativno izvodenje blok naredbi upravljen od iteracijskog izraza:
For . . .1 for cilj in nizu:2 naredba(e)
-
Uvod u Python
Primjeri
Primjer (Aritmeticka sredina)Za dani niz podataka treba odrediti njegovu aritmeticku sredinu.
1 print("Unesite brojeve za racunanje")2 print("Za izlaz upisite 0")34 suma =0.05 broj=input("Upisite broj")6 n=1 #brojimo elemente78 while (broj !=0):9 broj=input("Upisite broj:")
10 n+=111 suma+=broj1213 print suma/n
Primjer (Fibonnaci)Za dani n ispisite n Fibonaccijevih brojeva.
1 n=eval(input("Koliko zelite fibonaccijevih brojeva:"))2 result = []3 a, b = 0, 14 while b < n:5 result.append(b)6 a, b = b, a+b78 print "Fibonaccijevi brojevi: "9 for broj in result:
10 print broj , " "
-
Uvod u Python
Primjeri
Primjer (Aritmeticka sredina)Za dani niz podataka treba odrediti njegovu aritmeticku sredinu.
1 print("Unesite brojeve za racunanje")2 print("Za izlaz upisite 0")34 suma =0.05 broj=input("Upisite broj")6 n=1 #brojimo elemente78 while (broj !=0):9 broj=input("Upisite broj:")
10 n+=111 suma+=broj1213 print suma/n
Primjer (Fibonnaci)Za dani n ispisite n Fibonaccijevih brojeva.
1 n=eval(input("Koliko zelite fibonaccijevih brojeva:"))2 result = []3 a, b = 0, 14 while b < n:5 result.append(b)6 a, b = b, a+b78 print "Fibonaccijevi brojevi: "9 for broj in result:
10 print broj , " "
-
Uvod u Python
Primjeri
Primjer (Aritmeticka sredina)Za dani niz podataka treba odrediti njegovu aritmeticku sredinu.
1 print("Unesite brojeve za racunanje")2 print("Za izlaz upisite 0")34 suma =0.05 broj=input("Upisite broj")6 n=1 #brojimo elemente78 while (broj !=0):9 broj=input("Upisite broj:")
10 n+=111 suma+=broj1213 print suma/n
Primjer (Fibonnaci)Za dani n ispisite n Fibonaccijevih brojeva.
1 n=eval(input("Koliko zelite fibonaccijevih brojeva:"))2 result = []3 a, b = 0, 14 while b < n:5 result.append(b)6 a, b = b, a+b78 print "Fibonaccijevi brojevi: "9 for broj in result:
10 print broj , " "
-
Uvod u Python
Funkcije
Funkcije su blokovi naredbi koji primaju vrijednosti izvana i mogu vratiti jednu ili visevrijednosti kao rezultat njihova racunanja.
1 def ime_funkcije(parametri ):2 izraz(i)
PrimjerDefinirajte funkciju koja vraca aposolutnu vrijednost broja.
1 def abs(x):2 if x
-
Uvod u Python
Funkcijski argumenti
Parametri su varijable cije vrijednosti uzima funkcija.
Primjer (Artimeticka sredina)Funkcija aritmeticke sredine za proizvoljne brojeve.
1 def Mean(* brojevi ):2 n=03 suma =0.04 for x in brojevi:5 suma+=x6 n+=17 return suma/n8 print Mean(2,2,1,6,9,4,7,1,3)
-
Uvod u Python
Primjeri
PrimjerDefinirajte funkciju koja ce provjeravati da li je broj prost i dodatnu funkciju koja ce zaproslijedene brojeve racunati samo sumu prostih brojeva.
1 import math23 def Prime(broj):4 for p in range(2,broj):5 if (broj % p == 0):6 return False7 return True
1 import math23 def prime_sum (* brojevi ):4 suma =0.05 for x in brojevi:6 if Prime(x):7 suma=suma+x8 return suma
-
Uvod u Python
Primjeri
PrimjerDefinirajte funkciju koja ce provjeravati da li je broj prost i dodatnu funkciju koja ce zaproslijedene brojeve racunati samo sumu prostih brojeva.
1 import math23 def Prime(broj):4 for p in range(2,broj):5 if (broj % p == 0):6 return False7 return True
1 import math23 def prime_sum (* brojevi ):4 suma =0.05 for x in brojevi:6 if Prime(x):7 suma=suma+x8 return suma
-
Uvod u Python
Zadaci
ZadatakNapisite Python program koji ce aproksimirati broj pi tako da izracunate konacnusumu niza 4/1 4/3 + 4/5 4/7 + 4/9 4/11 + . . .. Korisnik treba unjeti broj n kojipredstavlja broj clanova ovog niza.
ZadatakNapisite Python program koji ce za uneseno ime i prezime generirati korisnicko imetako da ga slozi kao string od prvog znaka imena i od prvih sedam znakova prezimena.Ime i prezime moraju biti prebaceni u mala slova.
-
Uvod u Python
OOP objektno orijentirano programiranje
Klase kolekcija podataka (atributa) sa skupom metoda za pristup i manipulaciju timpodacima.
Objekt instanca klase - varijabla koja sadrzi atribute i metode s postavljenimvrijednostima kako je propisala klasa koju je instancira.
Vazne karakteristike OOP:
1. polimorfizam (engl. polymorphism) manipulirati objektima bez eksplicitnogznanja o tipu ili klasi kojima pripadaju objekti.
2. enkapsulacija (engl. encapsulation) atributima i metodama se mogu pridjelitirazine pristupa koje mogu biti privatne ili javne.
3. nasljedivanje (engl. inheritance) skupovni odnos izmedu klasa (klasa moze bitipodklasa neke druge klase)
-
Uvod u Python
OOP objektno orijentirano programiranje
Klase kolekcija podataka (atributa) sa skupom metoda za pristup i manipulaciju timpodacima.
Objekt instanca klase - varijabla koja sadrzi atribute i metode s postavljenimvrijednostima kako je propisala klasa koju je instancira.
Vazne karakteristike OOP:
1. polimorfizam (engl. polymorphism) manipulirati objektima bez eksplicitnogznanja o tipu ili klasi kojima pripadaju objekti.
2. enkapsulacija (engl. encapsulation) atributima i metodama se mogu pridjelitirazine pristupa koje mogu biti privatne ili javne.
3. nasljedivanje (engl. inheritance) skupovni odnos izmedu klasa (klasa moze bitipodklasa neke druge klase)
-
Uvod u Python
OOP u Pythonu
Klasa ili razred je Python objekt s nekoliko znacajki:
Objekt klase moze se pozivati kao da je funkcija. Poziv stvara novi objekt, poznatkao instanca klase
Klasa ima po volji imenovane atribute koji se mogu povezivati i referirati. Atributi klase koji su povezani na funkcije poznati su kao metode klase. Metoda moze imati posebno ime definirano od Pythona s dvije podcrte ( )
ispred i iza imena. Python upotrebljava takve posebne metode za neke operacijekoje se izvrsavaju na instancama klase. (konstruktor)
Klasa moze podatke i metode naslijediti od drugih klasa
-
Uvod u Python
OOP u Pythonu
Klasa ili razred je Python objekt s nekoliko znacajki:
Objekt klase moze se pozivati kao da je funkcija. Poziv stvara novi objekt, poznatkao instanca klase
Klasa ima po volji imenovane atribute koji se mogu povezivati i referirati.
Atributi klase koji su povezani na funkcije poznati su kao metode klase. Metoda moze imati posebno ime definirano od Pythona s dvije podcrte ( )
ispred i iza imena. Python upotrebljava takve posebne metode za neke operacijekoje se izvrsavaju na instancama klase. (konstruktor)
Klasa moze podatke i metode naslijediti od drugih klasa
-
Uvod u Python
OOP u Pythonu
Klasa ili razred je Python objekt s nekoliko znacajki:
Objekt klase moze se pozivati kao da je funkcija. Poziv stvara novi objekt, poznatkao instanca klase
Klasa ima po volji imenovane atribute koji se mogu povezivati i referirati. Atributi klase koji su povezani na funkcije poznati su kao metode klase.
Metoda moze imati posebno ime definirano od Pythona s dvije podcrte ( )ispred i iza imena. Python upotrebljava takve posebne metode za neke operacijekoje se izvrsavaju na instancama klase. (konstruktor)
Klasa moze podatke i metode naslijediti od drugih klasa
-
Uvod u Python
OOP u Pythonu
Klasa ili razred je Python objekt s nekoliko znacajki:
Objekt klase moze se pozivati kao da je funkcija. Poziv stvara novi objekt, poznatkao instanca klase
Klasa ima po volji imenovane atribute koji se mogu povezivati i referirati. Atributi klase koji su povezani na funkcije poznati su kao metode klase. Metoda moze imati posebno ime definirano od Pythona s dvije podcrte ( )
ispred i iza imena. Python upotrebljava takve posebne metode za neke operacijekoje se izvrsavaju na instancama klase. (konstruktor)
Klasa moze podatke i metode naslijediti od drugih klasa
-
Uvod u Python
OOP u Pythonu
Klasa ili razred je Python objekt s nekoliko znacajki:
Objekt klase moze se pozivati kao da je funkcija. Poziv stvara novi objekt, poznatkao instanca klase
Klasa ima po volji imenovane atribute koji se mogu povezivati i referirati. Atributi klase koji su povezani na funkcije poznati su kao metode klase. Metoda moze imati posebno ime definirano od Pythona s dvije podcrte ( )
ispred i iza imena. Python upotrebljava takve posebne metode za neke operacijekoje se izvrsavaju na instancama klase. (konstruktor)
Klasa moze podatke i metode naslijediti od drugih klasa
-
Uvod u Python
sintaksa
Definiranje klase:
1 class ime_klase [(klase roditelji )]:2 izraz13 izraz24 ...5 def metoda1 ():6 ...7 def metoda2 ():8 ...9 ...
ilustracija: atributi, funkcije, . . .
1 >>> class Moja_klasa:2 ... x=233 ...4 >>> objekt1=Moja_klasa ()5 >>> objekt1.x=516 >>> print(objekt1.x)7 518 >>> objekt2=Moja_klasa ()9 >>> print(objekt2.x)
10 23
Provjera da li neki objekt instanca neke klase:
1 >>> objekt3 =52 >>> isinstance(objekt1 ,Moja_klasa)3 True4 >>> isinstance(objekt3 ,Moja_klasa)5 False
-
Uvod u Python
sintaksa
Definiranje klase:
1 class ime_klase [(klase roditelji )]:2 izraz13 izraz24 ...5 def metoda1 ():6 ...7 def metoda2 ():8 ...9 ...
ilustracija: atributi, funkcije, . . .
1 >>> class Moja_klasa:2 ... x=233 ...4 >>> objekt1=Moja_klasa ()5 >>> objekt1.x=516 >>> print(objekt1.x)7 518 >>> objekt2=Moja_klasa ()9 >>> print(objekt2.x)
10 23
Provjera da li neki objekt instanca neke klase:
1 >>> objekt3 =52 >>> isinstance(objekt1 ,Moja_klasa)3 True4 >>> isinstance(objekt3 ,Moja_klasa)5 False
-
Uvod u Python
Enkapsulacija
U klasi mogu biti definirani razine pristupa metodama i atributima. Te razine mogubiti private i public i deklarirane su ovisno o broju podcrta (__) u prefiksu imenametoda/atributa:
1 self.__identifikator # privatna varijabla klase (private)2 self.identifikator # javna varijabla klase (public)
Primjer (Osoba)Klasa koja sadrzi javne i privatne varijable.
1 #7. OOP u Pythonu23 # jednostavni primjer klase i instanciranja45 class Osoba (): #definiranje klase6 "klasa s kojom instanciramo osobe"7 def postaviIme(self ,ime): #metode8 self.__ime=ime #privatni atributi9 def dajIme(self):
10 return self.__ime11 def pozdrav(self):12 print("Dobrodosli , gdine %s u svijet Pythona!" %self.name)1314 osoba1=Osoba() #instanciranje objekta klase Osoba15 osoba1.postaviIme(Pero)16 osoba1.pozdrav ()1718 osoba2=Osoba()19 osoba2.postaviIme(Ivo)20 osoba2.pozdrav ()2122 print("Imena novih pythonista su %s i %s!"%( osoba1.getName(),osoba2.getName ()))
-
Uvod u Python
Enkapsulacija
U klasi mogu biti definirani razine pristupa metodama i atributima. Te razine mogubiti private i public i deklarirane su ovisno o broju podcrta (__) u prefiksu imenametoda/atributa:
1 self.__identifikator # privatna varijabla klase (private)2 self.identifikator # javna varijabla klase (public)
Primjer (Osoba)Klasa koja sadrzi javne i privatne varijable.
1 #7. OOP u Pythonu23 # jednostavni primjer klase i instanciranja45 class Osoba (): #definiranje klase6 "klasa s kojom instanciramo osobe"7 def postaviIme(self ,ime): #metode8 self.__ime=ime #privatni atributi9 def dajIme(self):
10 return self.__ime11 def pozdrav(self):12 print("Dobrodosli , gdine %s u svijet Pythona!" %self.name)1314 osoba1=Osoba() #instanciranje objekta klase Osoba15 osoba1.postaviIme(Pero)16 osoba1.pozdrav ()1718 osoba2=Osoba()19 osoba2.postaviIme(Ivo)20 osoba2.pozdrav ()2122 print("Imena novih pythonista su %s i %s!"%( osoba1.getName(),osoba2.getName ()))
-
Uvod u Python
Inicijalizatori objekata
Za inicijalizaciju objekata koristimo posebnu funkciju zvanu konstruktor.
PrimjerNapisite Python klasu Pravokutnik u kojoj kontruktorom inicijalizirate vrijednostivarijabli visina, sirina i metode koje racunaju povrsinu odnosno opseg.
1 # Pravokutnik sa slucajnim duljinama stranicama2 from random import *3 import time45 seed()67 class Pravokutnik ():8 def __init__(self ,sirina ,duljina ):9 self.sirina=sirina
10 self.duljina=duljina1112 def povrsina(self):13 return self.duljina*self.sirina1415 def opseg(self):16 return 2*( self.duljina+self.sirina)171819 # glavni program2021 pravokutnici = []2223 for i in range (1,3):24 pravokutnik=Pravokutnik(random ()*10, random ()*10)25 pravokutnici.append(pravokutnik)2627 for pravokutnik in pravokutnici:28 print "Povrsina pravokutnika je %.2f, a opseg %.2f " % (pravokutnik.povrsina(), pravokutnik.opseg ())
-
Uvod u Python
Inicijalizatori objekata
Za inicijalizaciju objekata koristimo posebnu funkciju zvanu konstruktor.
PrimjerNapisite Python klasu Pravokutnik u kojoj kontruktorom inicijalizirate vrijednostivarijabli visina, sirina i metode koje racunaju povrsinu odnosno opseg.
1 # Pravokutnik sa slucajnim duljinama stranicama2 from random import *3 import time45 seed()67 class Pravokutnik ():8 def __init__(self ,sirina ,duljina ):9 self.sirina=sirina
10 self.duljina=duljina1112 def povrsina(self):13 return self.duljina*self.sirina1415 def opseg(self):16 return 2*( self.duljina+self.sirina)171819 # glavni program2021 pravokutnici = []2223 for i in range (1,3):24 pravokutnik=Pravokutnik(random ()*10, random ()*10)25 pravokutnici.append(pravokutnik)2627 for pravokutnik in pravokutnici:28 print "Povrsina pravokutnika je %.2f, a opseg %.2f " % (pravokutnik.povrsina(), pravokutnik.opseg ())
-
Uvod u Python
Nasljedivanje
Nasljedivanje je mehanizam stvaranja novih klasa koje specijaliziraju ili mijenjajuponasanje postojece klase.
1 class A:2 varA = 423 def method1(self):4 print("Class A : method1")5 class B:6 varB = 377 def method1(self):8 print("Class B : method1")9 def method2(self):
10 print("Class B : method2")1112 class C(A,B): # Nasljeduje od A i B13 varC = 3.314 def method2(self):15 print("Klasa B: override :-)")16 def method3(self):17 print("Class C : method3")1819 class D(A):20 varD =10021 def method4(self):22 print("Subclass of A")2324 objekt2=B()25 objekt3=C()26 objekt5=D()2728 # print(objekt2.varA) # greska: objekt2 nema atribut varA29 objekt3.varA # valjan ispis: 42
-
Uvod u Python
Nasljedivanje
Primjer klase i podklase:
Primjer (SPAM filter)Napisite Python klasu koja ce dani niz procistiti od odredene rijeci.
1 class Filter:2 def __init__(self):3 self.blokirano =[]4 def filter(self ,niz):5 return [x for x in niz if x not in self.blokirano]67 class SPAMFilter(Filter ):8 def __init__(self):9 self.blokirano =[SPAM]
101112 uzorak=Filter ()13 print(uzorak.filter ([1 ,2 ,3]))1415 filteruzorak=SPAMFilter ()16 print(filteruzorak.filter ([SPAM,SPAM,1,4,2,SPAM ,6,5]))
-
Uvod u Python
Zadaci
Zadatak 1
1. Napisite Python program u kojem ce te definirati klasu Trokut koja u sebi sadrzizasticene atribute a, b, c i javne metode povrsina() i opseg() koje ce racunatipovrsinu odnosno opseg trokuta. Definirajte konstruktor koji ce inicijaliziratiobjekt klase.
2. Definirajte Python klasu JednakokracniTrokut nasljedenu iz klase Trokut koji ukonstruktor prima samo parametre a, b i prosljeduje konstuktoru bazne klase.
-
Uvod u Python
Rjesenje.
1 # Trokut23 import math45 class Trokut:6 "klasa koja definira trokut"7 def __init__(self ,x,y,z):8 self._a=x9 self._b=y
10 self._c=z1112 def opseg(self):13 return self._a+self._b+self._c1415 def povrsina(self):16 s=(self._a+self._b+self._c)/2.017 return math.sqrt(s*(s-self._a)*(s-self._b)*(s-self._c))1819 class JednakokracniTrokut(Trokut ):20 def __init__(self ,a,b):21 Trokut.__init__(self ,a,b,b)2223 #glavni dio programa24 trokut1=Trokut (3,4,5)25 trokut2=JednakokracniTrokut (4,3)26 print "povrsina trokut1 = ",trokut1.povrsina ()27 print "povrsina trokut2 = ",trokut2.povrsina ()
-
Uvod u Python
Moduli i paketi
Podaci (varijable), funkcije, klase i objekti skupljaju se u module. Vise modula zajednocini paket. Moduli i paketi predstavljaju Python knjiznicu (engl. library).
Poziv modula postize se naredbom import:
1. Modul stvara novi prostor imena koji sluzi svim objektima definiranim u pripadnojizvornoj datoteci.
2. Modul izvrsava kod koji je sadrzan unutar novonastalog prostora imena.
3. Modul izvrsava ime unutar pozivatelja, koje se odnosi na prostor imena modula.Ovo ime podudara se s imenom modula.
Drugim rijecima, unutar jednog programa mozemo ukljucivati i druge programe.
1 >>> import this # Python zen -mudrost
-
Uvod u Python
Moduli i paketi
Podaci (varijable), funkcije, klase i objekti skupljaju se u module. Vise modula zajednocini paket. Moduli i paketi predstavljaju Python knjiznicu (engl. library).
Poziv modula postize se naredbom import:
1. Modul stvara novi prostor imena koji sluzi svim objektima definiranim u pripadnojizvornoj datoteci.
2. Modul izvrsava kod koji je sadrzan unutar novonastalog prostora imena.
3. Modul izvrsava ime unutar pozivatelja, koje se odnosi na prostor imena modula.Ovo ime podudara se s imenom modula.
Drugim rijecima, unutar jednog programa mozemo ukljucivati i druge programe.
1 >>> import this # Python zen -mudrost
-
Uvod u Python
Moduli i paketi
Podaci (varijable), funkcije, klase i objekti skupljaju se u module. Vise modula zajednocini paket. Moduli i paketi predstavljaju Python knjiznicu (engl. library).
Poziv modula postize se naredbom import:
1. Modul stvara novi prostor imena koji sluzi svim objektima definiranim u pripadnojizvornoj datoteci.
2. Modul izvrsava kod koji je sadrzan unutar novonastalog prostora imena.
3. Modul izvrsava ime unutar pozivatelja, koje se odnosi na prostor imena modula.Ovo ime podudara se s imenom modula.
Drugim rijecima, unutar jednog programa mozemo ukljucivati i druge programe.
1 >>> import this # Python zen -mudrost
-
Uvod u Python
Moduli i paketi
Podaci (varijable), funkcije, klase i objekti skupljaju se u module. Vise modula zajednocini paket. Moduli i paketi predstavljaju Python knjiznicu (engl. library).
Poziv modula postize se naredbom import:
1. Modul stvara novi prostor imena koji sluzi svim objektima definiranim u pripadnojizvornoj datoteci.
2. Modul izvrsava kod koji je sadrzan unutar novonastalog prostora imena.
3. Modul izvrsava ime unutar pozivatelja, koje se odnosi na prostor imena modula.Ovo ime podudara se s imenom modula.
Drugim rijecima, unutar jednog programa mozemo ukljucivati i druge programe.
1 >>> import this # Python zen -mudrost
-
Uvod u Python
Moduli i paketi
Podaci (varijable), funkcije, klase i objekti skupljaju se u module. Vise modula zajednocini paket. Moduli i paketi predstavljaju Python knjiznicu (engl. library).
Poziv modula postize se naredbom import:
1. Modul stvara novi prostor imena koji sluzi svim objektima definiranim u pripadnojizvornoj datoteci.
2. Modul izvrsava kod koji je sadrzan unutar novonastalog prostora imena.
3. Modul izvrsava ime unutar pozivatelja, koje se odnosi na prostor imena modula.Ovo ime podudara se s imenom modula.
Drugim rijecima, unutar jednog programa mozemo ukljucivati i druge programe.
1 >>> import this # Python zen -mudrost
-
Uvod u Python
Biblioteke
Primjer upotrebe import:
Prva programska skripta:
1 # datoteka: primjer.py2 a = 37 # Varijabla3 def A: # Funkcija4 print("Ja sam u A")5 class K: # Klasa6 def B(self):7 print("Ja sam u K.B")8 b = K() # Tvorba instance
uvoz u drugu programsku skriptu:
1 import sys2 # sys.path.append () # radni folder3 import primjer # Ucitava u memoriju i izvodi modul primjer 4 print(primjer.a) # Dohvaca izvodi neki clan (varijablu) modula primjer 5 primjer.A() # Dohvaca i izvodi funkciju iz modula6 c = primjer.K() # Dohvaca i izvodi klasu iz modula , tvorba objekta
-
Uvod u Python
Moduli u Python biblioteci
Moduli se mogu ucitati (importirati) koristeci alternativna imena, i to upotrebompoveznice as.Na primjer:
1 import os as sustav2 import socket as mreza3 sustav.chdir("..")4 mreza.gethostname ()5 ...6 import math as matematika7 x=matematika.sqrt (2)
-
Uvod u Python
Zadaci
Zadatak 2
1. Napisite Python program u kojem ce te definirati klasu Complex koja u sebisadrzi atribute Re, Im i preopteretite operatore +, tako da mozete primjenitiaritmeticki operator na dane objekte tipa Complex
2. Testiranje napravite u datoteci testComplex.py koja ce preuzeti Complex kaopaket s prijmjerom u = 2 i , v = 4 + 6i .
-
Uvod u Python
Rjesenje.
1 class Complex:2 def __init__(self ,real ,imag =0):3 self.real = float(real)4 self.imag = float(imag)5 def __repr__(self):6 return "(Complex %s+%s)" % (self.real , self.imag)7 def __str__(self):8 return "%g+%gi" % (self.real , self.imag)9 # self + other
10 def __add__(self ,drugi): # operator s lijeva11 return Complex(self.real + drugi.real , self.imag + drugi.imag)12 def __radd__(self ,drugi): # operator s desna13 return Complex.__add__(drugi ,self)14 # other - self15 def __mul__(self ,drugi):16 pass17 def __rmul__(self ,drugi):18 pass19 def __coerce__(self , drugi):20 if isinstance(drugi , Complex ):21 return self ,drugi2223 try: # Provjeriti ako se moze pretvoriti u float24 return self , Complex(float(drugi))25 except ValueError:26 pass2728 # testComplex.py2930 from Complex import Complex31 u=Complex (1,2)32 v=Complex (2,-3)33 x=334 print u+v35 print u+x
-
Uvod u Python
GUI - rad s grafickim suceljem
Prakticna primjena OOP-a je implementacija struktura podataka grafickog prikaza.Python u svojoj temeljnoj distribuciji sadrzi Tkinter biblioteku za rad s grafikom.
Koristit cemo graphics.py za rad s grafikom i ona u sebi sadrzi klasu koja je izvedenaiz klasa implementiranih u Tk biblioteci.
Za neke druge graficke biblioteke pogledati: wxPython, PyQt, ...
-
Uvod u Python
GUI - rad s grafickim suceljem
Prakticna primjena OOP-a je implementacija struktura podataka grafickog prikaza.Python u svojoj temeljnoj distribuciji sadrzi Tkinter biblioteku za rad s grafikom.
Koristit cemo graphics.py za rad s grafikom i ona u sebi sadrzi klasu koja je izvedenaiz klasa implementiranih u Tk biblioteci.
Za neke druge graficke biblioteke pogledati: wxPython, PyQt, ...
-
Uvod u Python
GUI - rad s grafickim suceljem
Prakticna primjena OOP-a je implementacija struktura podataka grafickog prikaza.Python u svojoj temeljnoj distribuciji sadrzi Tkinter biblioteku za rad s grafikom.
Koristit cemo graphics.py za rad s grafikom i ona u sebi sadrzi klasu koja je izvedenaiz klasa implementiranih u Tk biblioteci.
Za neke druge graficke biblioteke pogledati: wxPython, PyQt, ...
-
Uvod u Python
Moduli u graphics.py paketu I
GraphWin objekt predstavlja graficki prozor i prostor u kojem se mogu prikazatigraficki elementi
GraphWin(title,width,height) instancira objekt klase GraphWin koji imanaziv title, i dimenzije width height.
plot(x,y,color) metoda crta piksel na poziciji (x , y) boje color. setBackground(color) postavlja boju pozadine prozora close() metoda zatvara aktivni prozor getMouse() metoda vraca Point objekt na poziciji na kojoj korisnik klikne
misem
setCoords(x1,y1,x2,y2) postavlja koordinanti sustav prozora (x1,y1) (x2,y2) dijagonala prozora
Graphics objekti modul predstavlja geometrijske elemene tocke, pravca, kruznice,elipse, pravokutnika, poligona i teksta redom kao klase imenom Point, Line,Circle, Oval, Rectangle, Polygon,Text
setFill(color) postavlja boju interijera grafickog objekta setOutline(color) postavlja boju oruba geometrijskog objekta setWidth(pixels) metoda postavlja sirinu oruba objekta na velicinu pixels draw(GraphWinObj) metoda crta objekt unutar GraphWinObj objekta undraw() brise objekt iz grafickog prozora
-
Uvod u Python
Moduli u graphics.py paketu II
move(dx,dy) pomjeri objekt za dx jedinica po osi x , i dy jedinica po osi y clone() metoda vraca duplikat objekta koji je u neiscrtanom stanjuPoint metode
Point(x,y) stvara tocku s danim koordinatama getX(),getY() vraca x , odnosno y koordinatuLine metode
Line(pt1,pt2) metoda konstruira duzinu od tocaka pt1,pt2 getCenter() vraca poloviste segmenta getP1(), getP2() vraca tocke koje cine krajeve duzineCircle metode
Circle(center,radius) metoda konstuira kruznicu s danim centrom iradijusom
getCenter() vrati tocku centra kruznice getRadius() vraca duljinu radijusa kruznice getP1(), getP2() vraca 2 krajnje tocke horizontalog promjeraRectangular metode
Rectangle(pt1, pt2) konsturira pravokutnik ciju dijagonalu tvore tockept1,pt2
-
Uvod u Python
Moduli u graphics.py paketu III
getCenter() sjeciste dijagonala pravokutnika getP1(), getP2() vraca kranje tocke s kojima je instanciran objektOval metode
Oval(pt1, pt2) konsturira elipsu u okviru odredenim dijagonalom cije sukrajnje tocke pt1,pt2.
getCenter() vraca tocku centra elipse getP1(), getP2() vraca kranje tocke s kojima je instanciran objektPoylgon metode
Polygon(pt1, pt2, pt3, ...) konstuira poligon ciji vrhovi su tockept1,pt2,...
getPoints() vraca listu tocaka koje tvore poligonText metode
Text(anchor, string) stvara objekt koji na tocki anchor sadrzi string string. setText(string) postavlja tekst objekta na string string getText() vrati trenutni string getAnchor() vrati tocku na kojoj je postavljen tekst setFace(family) promjena fonta u familiju family. Familiju fonta mozemo
birati izmedu helvetica, courier, times roman, i arial
setSize(point) promjena velicine slova na velicinu point
-
Uvod u Python
Moduli u graphics.py paketu IV
setStyle(style) promjena stila fonta na stil style koji moze biti normal,bold, italic, i bold italic
Objekti unosa omogucuju korisniku unos ili promjenu vrijednosti u graficki element.
Entry(center, width) pozicionira tekstualni okvir na tocki center koja imasirinu width
getAnchor() vraca tocku na kojoj se objekt nalazi getText() vraca tekst koji se nalazi u objektu setText(string) azurira vrijednost teksta na string
Prikaz slike paket omogucava minimalnu mogucnost unosa slike (JPEG,GIF,PPM )unutar GraphWin objekta. Neke od specificnih metoda:
Image(center, filename) konstruira sliku na tocki center iz datotekefilename
getAnchor() vraca tocku na kojoj se nalazi slikaStvaranje boja paket omogucuje koristenje standarne imenovane palete boja kao stoje npr. red, purple, green, cyan,. . .ili mjesanje RGB boja s metodom rgb color(r,g,b) gdje su r,g,b cjelobrojnevrijednosti od 0 . . . 255 i odgovaraju redom crvenoj, zelenoj i plavoj boji.
-
Uvod u Python
PrimjerNapravite graficki prozor u kojem ce biti prikazan uzorak za igru kruzic-krizic.
1 # create a default 200 x200 window2 from graphics import *3 win = GraphWin("Tic -Tac -Toe")4 # set coordinates to go from (0,0) in the lower left5 # to (3,3) in the upper right.6 win.setCoords (0.0, 0.0, 3.0, 3.0)7 # Draw vertical lines8 Line(Point(1,0), Point (1 ,3)). draw(win)9 Line(Point(2,0), Point (2 ,3)). draw(win)
10 # Draw horizontal lines11 Line(Point(0,1), Point (3 ,1)). draw(win)12 Line(Point(0,2), Point (3 ,2)). draw(win)
-
Uvod u Python
PrimjerNapravite graficki prozor u kojem ce biti prikazan uzorak za igru kruzic-krizic.
1 # create a default 200 x200 window2 from graphics import *3 win = GraphWin("Tic -Tac -Toe")4 # set coordinates to go from (0,0) in the lower left5 # to (3,3) in the upper right.6 win.setCoords (0.0, 0.0, 3.0, 3.0)7 # Draw vertical lines8 Line(Point(1,0), Point (1 ,3)). draw(win)9 Line(Point(2,0), Point (2 ,3)). draw(win)
10 # Draw horizontal lines11 Line(Point(0,1), Point (3 ,1)). draw(win)12 Line(Point(0,2), Point (3 ,2)). draw(win)
-
Uvod u Python
PrimjerNapravite graficki prozor u kojem cete s 3 klika misa definirati tocke. Napravite objekttrokut uz pomoc tih 3 tocke i definirajte mu boju ispune i boju oruba.
12 # program za crtanje trokuta3 from graphics import *45 def crtajTrokut ():67 win = GraphWin("Trokut")8 win.setCoords (0.0, 0.0, 10.0, 10.0) # postovi koordinatni sustav9
10 message = Text(Point(5, 0.5), "Oznacite 3 tocke:") # tekst komentara11 message.draw(win)1213 # ucitaj i nacrtaj 3 tocke14 p1 = win.getMouse ()15 p1.draw(win)16 p2 = win.getMouse ()17 p2.draw(win)18 p3 = win.getMouse ()19 p3.draw(win)2021 # koristi poligon objekt kako bi nacrtao trokut22 triangle = Polygon(p1 ,p2,p3)23 triangle.setFill("red") # postavi ispunu24 triangle.setOutline("cyan") # postavi obrub25 triangle.draw(win) # nacrtal trokut2627 # novi klik je izlaz28 message.setText("Klikni jos jednom na izlaz ...")29 win.getMouse ()303132 crtajTrokut ()
-
Uvod u Python
PrimjerNapravite graficki prozor u kojem cete s 3 klika misa definirati tocke. Napravite objekttrokut uz pomoc tih 3 tocke i definirajte mu boju ispune i boju oruba.
12 # program za crtanje trokuta3 from graphics import *45 def crtajTrokut ():67 win = GraphWin("Trokut")8 win.setCoords (0.0, 0.0, 10.0, 10.0) # postovi koordinatni sustav9
10 message = Text(Point(5, 0.5), "Oznacite 3 tocke:") # tekst komentara11 message.draw(win)1213 # ucitaj i nacrtaj 3 tocke14 p1 = win.getMouse ()15 p1.draw(win)16 p2 = win.getMouse ()17 p2.draw(win)18 p3 = win.getMouse ()19 p3.draw(win)2021 # koristi poligon objekt kako bi nacrtao trokut22 triangle = Polygon(p1 ,p2,p3)23 triangle.setFill("red") # postavi ispunu24 triangle.setOutline("cyan") # postavi obrub25 triangle.draw(win) # nacrtal trokut2627 # novi klik je izlaz28 message.setText("Klikni jos jednom na izlaz ...")29 win.getMouse ()303132 crtajTrokut ()
-
Uvod u Python
PrimjerNapravite graficki program koji ce unositi temperaturu u Celziusovim stupnjevima, avracati vrijednost u Fahrenheit skali.
1 #graficko sucelje za pretvaranje temperature iz celziusa u Farenheit temp.23 from graphics import * # ukljucivanje grafickog paketa4 def main ():5 win = GraphWin("Celsius Converter", 300, 200)6 win.setCoords (0.0, 0.0, 3.0, 4.0)7 # Draw the interface8 Text(Point(1,3), " Celsius Temperature:").draw(win)9 Text(Point(1,1), "Fahrenheit Temperature:").draw(win)
10 input = Entry(Point(2,3), 5)11 input.setText("0.0")12 input.draw(win)13 output = Text(Point(2,1),"")14 output.draw(win)15 button = Text(Point (1.5 ,2.0) ,"Convert It")16 button.draw(win)17 Rectangle(Point (1,1.5), Point (2 ,2.5)). draw(win)1819 # pricekaj za klik misa20 win.getMouse ()21 # pretvori vrijednost22 celsius = eval(input.getText ())23 fahrenheit = 9.0/5.0 * celsius + 3224 # prikazi rezultati i promijeni tekst dugmeta25 output.setText("%0.1f" % fahrenheit)26 button.setText("Quit")27 # cekaj za klik i izlaz28 win.getMouse ()29 win.close()3031 main()
-
Uvod u Python
PrimjerNapravite graficki program koji ce unositi temperaturu u Celziusovim stupnjevima, avracati vrijednost u Fahrenheit skali.
1 #graficko sucelje za pretvaranje temperature iz celziusa u Farenheit temp.23 from graphics import * # ukljucivanje grafickog paketa4 def main ():5 win = GraphWin("Celsius Converter", 300, 200)6 win.setCoords (0.0, 0.0, 3.0, 4.0)7 # Draw the interface8 Text(Point(1,3), " Celsius Temperature:").draw(win)9 Text(Point(1,1), "Fahrenheit Temperature:").draw(win)
10 input = Entry(Point(2,3), 5)11 input.setText("0.0")12 input.draw(win)13 output = Text(Point(2,1),"")14 output.draw(win)15 button = Text(Point (1.5 ,2.0) ,"Convert It")16 button.draw(win)17 Rectangle(Point (1,1.5), Point (2 ,2.5)). draw(win)1819 # pricekaj za klik misa20 win.getMouse ()21 # pretvori vrijednost22 celsius = eval(input.getText ())23 fahrenheit = 9.0/5.0 * celsius + 3224 # prikazi rezultati i promijeni tekst dugmeta25 output.setText("%0.1f" % fahrenheit)26 button.setText("Quit")27 # cekaj za klik i izlaz28 win.getMouse ()29 win.close()3031 main()
-
Uvod u Python
Zadaci
ZadatakNapisite graficki program u Pythonu koji ce imati input polja za upis parametaraa, b, c kvadratne funkcije f (x) = ax2 + bx + c, a 6= 0 te granice domene l , r i nakonupisa vrijednosti ispisati koordinatni sustav u kojem ce se nalaziti graf funkcije f (x) nadomeni [l , r ].Napomena: Graf mozete diskretno aproksimirati s tockama (xi , f (x)), i = 1, . . . , kgdje je k broj uzoraka i zatim tocke grafa povezati duzinama.
-
Uvod u Python
Zakljucak
Sto dalje?
Minicourse: kratki uvod u Python, NIJE CIJELI KURS. Zahtjev na samostalni raduz preporucenu literaturu.
Pitanja iz Pythona ? Konzultacije u dogovoru sa asistentima. Python u primjeni ostale vjezbe.
-
Uvod u Python
Zakljucak
Sto dalje?
Minicourse: kratki uvod u Python, NIJE CIJELI KURS. Zahtjev na samostalni raduz preporucenu literaturu.
Pitanja iz Pythona ? Konzultacije u dogovoru sa asistentima.
Python u primjeni ostale vjezbe.
-
Uvod u Python
Zakljucak
Sto dalje?
Minicourse: kratki uvod u Python, NIJE CIJELI KURS. Zahtjev na samostalni raduz preporucenu literaturu.
Pitanja iz Pythona ? Konzultacije u dogovoru sa asistentima. Python u primjeni ostale vjezbe.
-
Uvod u Python
Literatura
Mark Pilgrim, Dive Into Python 3, APress, 2009 [besplatno]
James Payne, Beginning Python: Using Python 2.6 and Python 3.1, WileyPublishing, Inc., 2011.
J. M. Zelle, Python: Introduction to Computer Science, 2003.
Uvod u Python