Você está na página 1de 68

Uvod u Python

Python minicourse
Raunalne mree i usluge c z

Odjel za matematiku 2012

Uvod u Python

Jezine znaajke c c

Python je interpreterski, interaktivni programski jezik koji podrava nekoliko z programerskih paradigmi s naglaskom na itljiv kod. c Tvorac: Guido von Rossum Primjena: MIT, NASA, IBM, Google, . . . Licenca: open-source
Interpretacija medukoda - izvravanje naredbe po naredbu s Jezik visoke razine - pretpostavljeno podrava ADT z ista sintaksa relativno lagani prijelaz s pseudokoda na implementaciju c podrava nekoliko programerskih paradigmi (proceduralno programiranje, OOP, z

funkcionalno programiranje, ...)


proirivost (CPython, Jython, IronPython (.NET)) s bogata biblioteka programa - Python Cheese Shop - PyPI.

Uvod u Python

Izvodenje python programa

2 naina rada: c Interaktivni rad u konzolu se upisuju naredbe programskog jezika koje se odmah interpretiraju (izvravaju). s
1 2 3 Python 2.7 ( r32 :88445 , Feb 20 2011 , 21:29:02) [ MSC v .1500 32 bit ( Intel )] on win32 Type " copyright " , " credits " or " license () " for more information . >>> print " Hello World "

Skriptni rad Programi se spremaju u skripte a onda se kao Unix/Linux ili

Windows 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 temelju incijalizacije prepoznaje tip. Ispis na konzolu: print naredba

Primjer (Hello, World!)


1 >>> print " Hello , World ! "

Izraz za unos podataka s konzole: input naredba.

Primjer (Unos)
Napiite program koji e za uneseno ime napisati Dobrodoli, ime, u svijet Pythona. s c s

Uvod u Python

Varijable i unos

U Pythonu nema ekplicitine deklaracije tipa varijable, interpreter na temelju incijalizacije prepoznaje tip. Ispis na konzolu: print naredba

Primjer (Hello, World!)


1 >>> print " Hello , World ! "

Izraz za unos podataka s konzole: input naredba.

Primjer (Unos)
Napiite program koji e za uneseno ime napisati Dobrodoli, ime, u svijet Pythona. s c s
1 2 3 4 5 # ime . py ime = raw_input ( " Unesite ime : " ) # ime print " Dobrodosli " + ime + " u svijet Pythona " python ime . py

Uvod u Python

Tipovi podataka
Osnovne tipove podataka Python predstavlja u objektima.
Kategorija Prazno (None) Brojevi Ime NoneType IntType FractionalType FloatType ComplexType StringType UnicodeType ListType TupleType XRangeType BufferType DictType ClassType InstanceType FileType ModuleType Opis null objekt Cijeli broj Razlomak Realni broj s pom. zarezom Kompleksni broj Niz znakova (string) Unicode (string) Listina, popis ili lista n-terac Vraeno iz xrange() c Vraeno iz buer() c Rjenik c Denicija klase Stvaranje instance klase Datoteka - podaci na mediju Modul (skup objekata)

Nizovi

Preslikavanje Klase, razredi Instanca klase, objekt Datoteka Moduli

Primjer
1 2 3 4 2347 # Cjelobrojni literal 13.514 # Realni ( Floating - point ) literal 5.0 J # Imaginarni literal hello # String literal , niz znakova

1 2 3

[ 63 , faks , 8.6 ] # Listina , lista ili popis ( 450 , 320 , 600 ) # n - terac { a :72 , b :1.4 } # rje nik c

Uvod u Python

ADT

tipovi podataka vie razine (ADT) u Pythonu: s

Liste (lists): [a,1,b,16] N-terci (tuples): (1,10,3) Rjenici (dictionaries): {a:1,b:2,c:3} c Skupovi (sets)

U Pythonu je deniran povei broj operacija za rad sa spomenutim tipovima podataka. c

Uvod u Python

Malo igre sa spomenutim tipovima podataka...

Razliiti tipovi literala. c 1 2 3 4 5 6 7 8 9 10 11 12 >>> type ( " Python " ) # string literal < type str > >>> type (512) # numericki literal < type int > >>> k =2.178 # varijabla k >>> type ( k ) < type float > >>> type ({ a :72 , b :1.4 }) < type dict > >>> z =2+3 j # varijabla z >>> type ( z ) < type complex > 1 2 3 4

U Python 3 verziji postoji tip podataka razlomci: import fractions x = fractions . Fraction (1 ,3) # 1/3 y = fractions . Fraction (1 ,2) # 1/2 z = x + y # 5/6

Vrijednosti i funkcije iz modula:


1 2 3 >>> import math >>> print math . pi , math . sin (2.3) 3.14159265359 0.745 70521217 7

Uvod u Python

Operacije i operatori

Python podrava veinu operatora i operacija koji su podrani u ostalim programskim z c z jezicima:

1. aritmetike operacije (+, , , /, . . .) c 2. operatori pridruivanja (=, + =, =, =, . . .) z 3. logiki operatori (x < y , x <= y , x > y , x >= y , x <> y , x! = y , x == y ) c 4. specijalizirane operacije na pojedinim tipovima podataka (ugradene metode u objekte)

Uvod u Python

Operatori nad tipovima podataka:


izraz,... key:izraz,... [izraz,...] (izrazr,...) f(izraz,...) x[index1:index2] x[index] x.attr x**y x +x, -x x*y, x/y, x//y, x%y x+y, x-y xy, xy x&y x y xy x < y , x <= y , x > y , x >= y , x <> y , x! = y , x == y x is y, x is not y x in y, x not in y not x x and y x or y lambda arg,...: izraz String pretvorba Stvaranje rjenika c Stvaranje liste Stvaranje n-terca ili jednostavne zagrade Poziv funkcije Krika (slicing) s Indeksiranje (indexing) Referenca atributa Eksponent (x na y potenciju) Bitwise NE (NOT) Unarni plus ili minus Mnoenje, dijeljenje, dijeljenje na cijeli broj, ostatak z Zbajanje, oduzimanje Lijevi pomak, desni pomak Bitwise I (AND) Bitwise eksluzivni ILI (XOR) Bitwise ILI (OR) Usporedbe Provjera identiteta Provjera lanstva c Bool-ov NE (NOT) Bool-ov I (AND) Bool-ov ILI (OR) Anonimna jednostavna funkcija

Uvod u Python

Primjeri
Primjer
Napiite Python program koji e za unesene stranice trokuta a, b, c izraunati povrinu s c c s tog trokuta.

Uvod u Python

Primjeri
Primjer
Napiite Python program koji e za unesene stranice trokuta a, b, c izraunati povrinu s c c s tog trokuta.
1 2 3 4 5 6 7 8 9 import math print ( " Racun za povrsinu trokuta " ) a = input ( " a : " ) # pretpostavka : nejednakost trokuta b = input ( " b : " ) c = input ( " c : " ) s =( a + b + c )/2 print " povrsina trokuta je " , math . sqrt ( s *( s - a )*( s - b )*( s - c )) print " Opseg trokuta je " ,a + b + c

Uvod u Python

Primjeri
Primjer
Napiite Python program koji e za unesene stranice trokuta a, b, c izraunati povrinu s c c s tog trokuta.
1 2 3 4 5 6 7 8 9 import math print ( " Racun za povrsinu trokuta " ) a = input ( " a : " ) # pretpostavka : nejednakost trokuta b = input ( " b : " ) c = input ( " c : " ) s =( a + b + c )/2 print " povrsina trokuta je " , math . sqrt ( s *( s - a )*( s - b )*( s - c )) print " Opseg trokuta je " ,a + b + c

Primjer
Napiite Python program koji e sortirati unesenu listu brojeva pomou ugradene s c c funkcije sort().

Uvod u Python

Primjeri
Primjer
Napiite Python program koji e za unesene stranice trokuta a, b, c izraunati povrinu s c c s tog trokuta.
1 2 3 4 5 6 7 8 9 import math print ( " Racun za povrsinu trokuta " ) a = input ( " a : " ) # pretpostavka : nejednakost trokuta b = input ( " b : " ) c = input ( " c : " ) s =( a + b + c )/2 print " povrsina trokuta je " , math . sqrt ( s *( s - a )*( s - b )*( s - c )) print " Opseg trokuta je " ,a + b + c

Primjer
Napiite Python program koji e sortirati unesenu listu brojeva pomou ugradene s c c funkcije sort().
1 2 3 lista =[2 ,6 ,1 ,4 ,5 ,7] lista . sort () print lista

Primjer
Python program s pozdravom.

Uvod u Python

Primjeri
Primjer
Napiite Python program koji e za unesene stranice trokuta a, b, c izraunati povrinu s c c s tog trokuta.
1 2 3 4 5 6 7 8 9 import math print ( " Racun za povrsinu trokuta " ) a = input ( " a : " ) # pretpostavka : nejednakost trokuta b = input ( " b : " ) c = input ( " c : " ) s =( a + b + c )/2 print " povrsina trokuta je " , math . sqrt ( s *( s - a )*( s - b )*( s - c )) print " Opseg trokuta je " ,a + b + c

Primjer
Napiite Python program koji e sortirati unesenu listu brojeva pomou ugradene s c c funkcije sort().
1 2 3 lista =[2 ,6 ,1 ,4 ,5 ,7] lista . sort () print lista

Primjer
Python program s pozdravom.
1 2 3 4 ime = input ( " Vase ime : " ) titula = input ( " titula : " ) print " Dobrodosli u svijet Pythona , % s % s " % ( titula , ime )

Uvod u Python

Kontrolne strukture
Kontrolne strukture koje podrava Python: z

if . . . then . . . else
1 2 3 4 5 6 7 8 9 if uvjet ( i ): naredba ( e ) elif uvjet ( i ): naredba ( e ) elif uvjet ( i ): naredba ( e ) ... else uvjet ( i ): naredba ( e )

Ponavljaj uz uvjet . . .

While . . .
1 2 while izraz : naredba ( e )

Iterativno izvodenje blok naredbi upravljen od iteracijskog izraza:

For . . .
1 2 for cilj in nizu : naredba ( e )

Uvod u Python

Primjeri
Primjer (Aritmetika sredina) c
Za dani niz podataka treba odrediti njegovu aritmetiku sredinu. c

Uvod u Python

Primjeri
Primjer (Aritmetika sredina) c
Za dani niz podataka treba odrediti njegovu aritmetiku sredinu. c
1 2 3 4 5 6 7 8 9 10 11 12 13 print ( " Unesite brojeve za racunanje " ) print ( " Za izlaz upisite 0 " ) suma =0.0 broj = input ( " Upisite broj " ) n =1 # brojimo elemente while ( broj !=0): broj = input ( " Upisite broj : " ) n +=1 suma += broj print suma / n

Primjer (Fibonnaci)
Za dani n ispiite n Fibonaccijevih brojeva. s

Uvod u Python

Primjeri
Primjer (Aritmetika sredina) c
Za dani niz podataka treba odrediti njegovu aritmetiku sredinu. c
1 2 3 4 5 6 7 8 9 10 11 12 13 print ( " Unesite brojeve za racunanje " ) print ( " Za izlaz upisite 0 " ) suma =0.0 broj = input ( " Upisite broj " ) n =1 # brojimo elemente while ( broj !=0): broj = input ( " Upisite broj : " ) n +=1 suma += broj print suma / n

Primjer (Fibonnaci)
Za dani n ispiite n Fibonaccijevih brojeva. s
1 2 3 4 5 6 7 8 9 10 n = eval ( input ( " Koliko zelite fibona ccijevi h brojeva : " )) result = [] a, b = 0, 1 while b < n : result . append ( b ) a, b = b, a+b print " Fibonaccijevi brojevi : " for broj in result : print broj , " "

Uvod u Python

Funkcije

Funkcije su blokovi naredbi koji primaju vrijednosti izvana i mogu vratiti jednu ili vie s vrijednosti kao rezultat njihova raunanja. c

1 2

def ime_funkcije ( parametri ): izraz ( i )

Primjer
Denirajte funkciju koja vraa aposolutnu vrijednost broja. c
1 2 3 4 5 6 7 def abs ( x ): if x <0: return -x else : return x print abs ( -5) # ispisuje 5

Uvod u Python

Funkcijski argumenti

Parametri su varijable ije vrijednosti uzima funkcija. c

Primjer (Artimetika sredina) c


Funkcija aritmetike sredine za proizvoljne brojeve. c
1 2 3 4 5 6 7 8 def Mean (* brojevi ): n =0 suma =0.0 for x in brojevi : suma += x n +=1 return suma / n print Mean (2 ,2 ,1 ,6 ,9 ,4 ,7 ,1 ,3)

Uvod u Python

Primjeri

Primjer
Denirajte funkciju koja e provjeravati da li je broj prost i dodatnu funkciju koja e za c c proslijedene brojeve raunati samo sumu prostih brojeva. c

Uvod u Python

Primjeri

Primjer
Denirajte funkciju koja e provjeravati da li je broj prost i dodatnu funkciju koja e za c c proslijedene brojeve raunati samo sumu prostih brojeva. c
1 2 3 4 5 6 7 import math def Prime ( broj ): for p in range (2 , broj ): if ( broj % p == 0): return False return True 1 2 3 4 5 6 7 8 import math def prime_sum (* brojevi ): suma =0.0 for x in brojevi : if Prime ( x ): suma = suma + x return suma

Uvod u Python

Zadaci

Zadatak
Napiite Python program koji e aproksimirati broj tako da izraunate konanu s c c c sumu niza 4/1 4/3 + 4/5 4/7 + 4/9 4/11 + . . .. Korisnik treba unjeti broj n koji predstavlja broj lanova ovog niza. c

Zadatak
Napiite Python program koji e za uneseno ime i prezime generirati korisniko ime s c c tako da ga sloi kao string od prvog znaka imena i od prvih sedam znakova prezimena. z Ime i prezime moraju biti prebaeni u mala slova. c

Uvod u Python

OOP objektno orijentirano programiranje

Klase kolekcija podataka (atributa) sa skupom metoda za pristup i manipulaciju tim podacima. Objekt instanca klase - varijabla koja sadri atribute i metode s postavljenim z vrijednostima kako je propisala klasa koju je instancira.

Uvod u Python

OOP objektno orijentirano programiranje

Klase kolekcija podataka (atributa) sa skupom metoda za pristup i manipulaciju tim podacima. Objekt instanca klase - varijabla koja sadri atribute i metode s postavljenim z vrijednostima kako je propisala klasa koju je instancira. Vane karakteristike OOP: z 1. polimorzam (engl. polymorphism) manipulirati objektima bez eksplicitnog znanja o tipu ili klasi kojima pripadaju objekti. 2. enkapsulacija (engl. encapsulation) atributima i metodama se mogu pridjeliti razine pristupa koje mogu biti privatne ili javne. z 3. nasljedivanje (engl. inheritance) skupovni odnos izmedu klasa (klasa moe biti podklasa neke druge klase)

Uvod u Python

OOP u Pythonu

Klasa ili razred je Python objekt s nekoliko znaajki: c


Objekt klase moe se pozivati kao da je funkcija. Poziv stvara novi objekt, poznat z

kao instanca klase

Uvod u Python

OOP u Pythonu

Klasa ili razred je Python objekt s nekoliko znaajki: c


Objekt klase moe se pozivati kao da je funkcija. Poziv stvara novi objekt, poznat z

kao instanca klase


Klasa ima po volji imenovane atribute koji se mogu povezivati i referirati.

Uvod u Python

OOP u Pythonu

Klasa ili razred je Python objekt s nekoliko znaajki: c


Objekt klase moe se pozivati kao da je funkcija. Poziv stvara novi objekt, poznat z

kao 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.

Uvod u Python

OOP u Pythonu

Klasa ili razred je Python objekt s nekoliko znaajki: c


Objekt klase moe se pozivati kao da je funkcija. Poziv stvara novi objekt, poznat z

kao 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 moe imati posebno ime denirano od Pythona s dvije podcrte ( ) z

ispred i iza imena. Python upotrebljava takve posebne metode za neke operacije koje se izvravaju na instancama klase. (konstruktor) s

Uvod u Python

OOP u Pythonu

Klasa ili razred je Python objekt s nekoliko znaajki: c


Objekt klase moe se pozivati kao da je funkcija. Poziv stvara novi objekt, poznat z

kao 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 moe imati posebno ime denirano od Pythona s dvije podcrte ( ) z

ispred i iza imena. Python upotrebljava takve posebne metode za neke operacije koje se izvravaju na instancama klase. (konstruktor) s
Klasa moe podatke i metode naslijediti od drugih klasa z

Uvod u Python

sintaksa

Deniranje klase:
1 2 3 4 5 6 7 8 9 class ime_klase [( klase roditelji )]: izraz1 izraz2 ... def metoda1 (): ... def metoda2 (): ... ...

Uvod u Python

sintaksa

Deniranje klase:
1 2 3 4 5 6 7 8 9 class ime_klase [( klase roditelji )]: izraz1 izraz2 ... def metoda1 (): ... def metoda2 (): ... ...

ilustracija: atributi, funkcije, . . .


1 2 3 4 5 6 7 8 9 10 >>> ... ... >>> >>> >>> 51 >>> >>> 23 class Moja_klasa : x =23 objekt1 = Moja_klasa () objekt1 . x =51 print ( objekt1 . x ) objekt2 = Moja_klasa () print ( objekt2 . x ) 1 2 3 4 5 Provjera da li neki objekt instanca neke klase: >>> objekt3 =5 >>> isinstance ( objekt1 , Moja_klasa ) True >>> isinstance ( objekt3 , Moja_klasa ) False

Uvod u Python

Enkapsulacija
U klasi mogu biti denirani razine pristupa metodama i atributima. Te razine mogu biti private i public i deklarirane su ovisno o broju podcrta (__) u preksu imena metoda/atributa:
1 2 self . __ id e nt if i ka to r self . identifikator # privatna varijabla klase ( private ) # javna varijabla klase ( public )

Uvod u Python

Enkapsulacija
U klasi mogu biti denirani razine pristupa metodama i atributima. Te razine mogu biti private i public i deklarirane su ovisno o broju podcrta (__) u preksu imena metoda/atributa:
1 2 self . __ id e nt if i ka to r self . identifikator # privatna varijabla klase ( private ) # javna varijabla klase ( public )

Primjer (Osoba)
Klasa koja sadri javne i privatne varijable. z
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 # 7. OOP u Pythonu # jednostavni primjer klase i instanciranja class Osoba (): # definiranje klase " klasa s kojom instanciramo osobe " def postaviIme ( self , ime ): # metode self . __ime = ime # privatni atributi def dajIme ( self ): return self . __ime def pozdrav ( self ): print ( " Dobrodosli , gdine % s u svijet Pythona ! " % self . name ) osoba1 = Osoba () # instanciranje objekta klase Osoba osoba1 . postaviIme ( Pero ) osoba1 . pozdrav () osoba2 = Osoba () osoba2 . postaviIme ( Ivo ) osoba2 . pozdrav () 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.

Primjer
Napiite Python klasu Pravokutnik u kojoj kontruktorom inicijalizirate vrijednosti s varijabli visina, sirina i metode koje raunaju povrinu odnosno opseg. c s

Uvod u Python

Inicijalizatori objekata
Za inicijalizaciju objekata koristimo posebnu funkciju zvanu konstruktor.

Primjer
Napiite Python klasu Pravokutnik u kojoj kontruktorom inicijalizirate vrijednosti s varijabli visina, sirina i metode koje raunaju povrinu odnosno opseg. c s
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 # Pravokutnik sa slucajnim duljinama stranicama from random import * import time seed () class Pravokutnik (): def __init__ ( self , sirina , duljina ): self . sirina = sirina self . duljina = duljina def povrsina ( self ): return self . duljina * self . sirina def opseg ( self ): return 2*( self . duljina + self . sirina )

# glavni program pravokutnici = [] for i in range (1 ,3): pravokutnik = Pravokutnik ( random ()*10 , random ()*10) pravokutnici . append ( pravokutnik ) for pravokutnik in pravokutnici : print " Povrsina pravokutnika je %.2 f , a opseg %.2 f " % ( pravokutnik . povrsina () , pravokutnik . opseg ())

Uvod u Python

Nasljedivanje
Nasljedivanje je mehanizam stvaranja novih klasa koje specijaliziraju ili mijenjaju ponaanje postojee klase. s c

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

class A : varA = 42 def method1 ( self ): print ( " Class A : method1 " ) class B : varB = 37 def method1 ( self ): print ( " Class B : method1 " ) def method2 ( self ): print ( " Class B : method2 " ) class C (A , B ): # Nasljeduje od A i B varC = 3.3 def method2 ( self ): print ( " Klasa B : override : -) " ) def method3 ( self ): print ( " Class C : method3 " ) class D ( A ): varD =100 def method4 ( self ): print ( " Subclass of A " ) objekt2 = B () objekt3 = C () objekt5 = D () # print ( objekt2 . varA ) # greska : objekt2 nema atribut varA objekt3 . varA # valjan ispis : 42

Uvod u Python

Nasljedivanje

Primjer klase i podklase:

Primjer (SPAM lter)


Napiite Python klasu koja e dani niz proistiti od odredene rijei. s c c c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 class Filter : def __init__ ( self ): self . blokirano =[] def filter ( self , niz ): return [ x for x in niz if x not in self . blokirano ] class SPAMFilter ( Filter ): def __init__ ( self ): self . blokirano =[ SPAM ]

uzorak = Filter () print ( uzorak . filter ([1 ,2 ,3])) filteruzorak = SPAMFilter () print ( filteruzorak . filter ([ SPAM , SPAM ,1 ,4 ,2 , SPAM ,6 ,5]))

Uvod u Python

Zadaci

Zadatak 1
1. Napiite Python program u kojem e te denirati klasu Trokut koja u sebi sadri s c z zatiene atribute a, b, c i javne metode povrsina() i opseg() koje e raunati s c c c povrinu odnosno opseg trokuta. Denirajte konstruktor koji e inicijalizirati s c objekt klase. 2. Denirajte Python klasu JednakokracniTrokut nasljedenu iz klase Trokut koji u konstruktor prima samo parametre a, b i prosljeduje konstuktoru bazne klase.

Uvod u Python

Rjeenje. s

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

# Trokut import math class Trokut : " klasa koja definira trokut " def __init__ ( self ,x ,y , z ): self . _a = x self . _b = y self . _c = z def opseg ( self ): return self . _a + self . _b + self . _c def povrsina ( self ): s =( self . _a + self . _b + self . _c )/2.0 return math . sqrt ( s *( s - self . _a )*( s - self . _b )*( s - self . _c )) class J e d n a k o k r a c n i T r o k u t ( Trokut ): def __init__ ( self ,a , b ): Trokut . __init__ ( self ,a ,b , b ) # glavni dio programa trokut1 = Trokut (3 ,4 ,5) trokut2 = J ed n a k o k r a c n i T r o k u t (4 ,3) print " povrsina trokut1 = " , trokut1 . povrsina () print " povrsina trokut2 = " , trokut2 . povrsina ()

Uvod u Python

Moduli i paketi

Podaci (varijable), funkcije, klase i objekti skupljaju se u module. Vie modula zajedno s ini paket. Moduli i paketi predstavljaju Python knjinicu (engl. library). c z Poziv modula postie se naredbom import: z 1. Modul stvara novi prostor imena koji slui svim objektima deniranim u pripadnoj z izvornoj datoteci.

Uvod u Python

Moduli i paketi

Podaci (varijable), funkcije, klase i objekti skupljaju se u module. Vie modula zajedno s ini paket. Moduli i paketi predstavljaju Python knjinicu (engl. library). c z Poziv modula postie se naredbom import: z 1. Modul stvara novi prostor imena koji slui svim objektima deniranim u pripadnoj z izvornoj datoteci. 2. Modul izvrava kd koji je sadran unutar novonastalog prostora imena. s o z

Uvod u Python

Moduli i paketi

Podaci (varijable), funkcije, klase i objekti skupljaju se u module. Vie modula zajedno s ini paket. Moduli i paketi predstavljaju Python knjinicu (engl. library). c z Poziv modula postie se naredbom import: z 1. Modul stvara novi prostor imena koji slui svim objektima deniranim u pripadnoj z izvornoj datoteci. 2. Modul izvrava kd koji je sadran unutar novonastalog prostora imena. s o z 3. Modul izvrava ime unutar pozivatelja, koje se odnosi na prostor imena modula. s Ovo ime podudara se s imenom modula.

Uvod u Python

Moduli i paketi

Podaci (varijable), funkcije, klase i objekti skupljaju se u module. Vie modula zajedno s ini paket. Moduli i paketi predstavljaju Python knjinicu (engl. library). c z Poziv modula postie se naredbom import: z 1. Modul stvara novi prostor imena koji slui svim objektima deniranim u pripadnoj z izvornoj datoteci. 2. Modul izvrava kd koji je sadran unutar novonastalog prostora imena. s o z 3. Modul izvrava ime unutar pozivatelja, koje se odnosi na prostor imena modula. s Ovo ime podudara se s imenom modula.

Uvod u Python

Moduli i paketi

Podaci (varijable), funkcije, klase i objekti skupljaju se u module. Vie modula zajedno s ini paket. Moduli i paketi predstavljaju Python knjinicu (engl. library). c z Poziv modula postie se naredbom import: z 1. Modul stvara novi prostor imena koji slui svim objektima deniranim u pripadnoj z izvornoj datoteci. 2. Modul izvrava kd koji je sadran unutar novonastalog prostora imena. s o z 3. Modul izvrava ime unutar pozivatelja, koje se odnosi na prostor imena modula. s Ovo ime podudara se s imenom modula. Drugim rijeima, unutar jednog programa moemo ukljuivati i druge programe. c z c

>>> import this

# Python zen - mudrost

Uvod u Python

Biblioteke

Primjer upotrebe import:


Prva programska skripta: 1 2 3 4 5 6 7 8 # datoteka : primjer . py a = 37 # def A : # print ( " Ja sam u A " ) class K : # def B ( self ): print ( " Ja sam u K . B " ) b = K () # uvoz u drugu programsku skriptu: 1 2 3 4 5 6 import sys # sys . path . append () # radni folder import primjer # U itava u memoriju i izvodi modul primjer c print ( primjer . a ) # Dohva a izvodi neki lan ( varijablu ) modula primjer c c primjer . A () # Dohva a i izvodi funkciju iz modula c c = primjer . K () # Dohva a i izvodi klasu iz modula , tvorba objekta c

Varijabla Funkcija Klasa

Tvorba instance

Uvod u Python

Moduli u Python biblioteci

Moduli se mogu uitati (importirati) koristei alternativna imena, i to upotrebom c c poveznice as. Na primjer:

1 2 3 4 5 6 7

import os as sustav import socket as mreza sustav . chdir ( " .. " ) mreza . gethostname () ... import math as matematika x = matematika . sqrt (2)

Uvod u Python

Zadaci

Zadatak 2
1. Napiite Python program u kojem e te denirati klasu Complex koja u sebi s c sadri atribute Re, Im i preopteretite operatore +, tako da moete primjeniti z z aritmetiki operator na dane objekte tipa Complex c 2. Testiranje napravite u datoteci testComplex.py koja e preuzeti Complex kao c paket s prijmjerom u = 2 i, v = 4 + 6i.

Uvod u Python

Rjeenje. s
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 class Complex : def __init__ ( self , real , imag =0): self . real = float ( real ) self . imag = float ( imag ) def __repr__ ( self ): return " ( Complex % s +% s ) " % ( self . real , self . imag ) def __str__ ( self ): return " % g +% gi " % ( self . real , self . imag ) # self + other def __add__ ( self , drugi ): # operator s lijeva return Complex ( self . real + drugi . real , self . imag + drugi . imag ) def __radd__ ( self , drugi ): # operator s desna return Complex . __add__ ( drugi , self ) # other - self def __mul__ ( self , drugi ): pass def __rmul__ ( self , drugi ): pass def __coerce__ ( self , drugi ): if isinstance ( drugi , Complex ): return self , drugi try : # Provjeriti ako se moze pretvoriti u float return self , Complex ( float ( drugi )) except ValueError : pass # testComplex . py from Complex import Complex u = Complex (1 ,2) v = Complex (2 , -3) x =3 print u + v print u + x

Uvod u Python

GUI - rad s grakim sueljem c c


Praktina primjena OOP-a je implementacija struktura podataka grakog prikaza. c c Python u svojoj temeljnoj distribuciji sadri Tkinter biblioteku za rad s grakom. z

Uvod u Python

GUI - rad s grakim sueljem c c


Praktina primjena OOP-a je implementacija struktura podataka grakog prikaza. c c Python u svojoj temeljnoj distribuciji sadri Tkinter biblioteku za rad s grakom. z

Koristit emo graphics.py za rad s grakom i ona u sebi sadri klasu koja je izvedena c z iz klasa implementiranih u Tk biblioteci.

Uvod u Python

GUI - rad s grakim sueljem c c


Praktina primjena OOP-a je implementacija struktura podataka grakog prikaza. c c Python u svojoj temeljnoj distribuciji sadri Tkinter biblioteku za rad s grakom. z

Koristit emo graphics.py za rad s grakom i ona u sebi sadri klasu koja je izvedena c z iz klasa implementiranih u Tk biblioteci. Za neke druge grake biblioteke pogledati: wxPython, PyQt, ... c

Uvod u Python

Moduli u graphics.py paketu I


GraphWin objekt predstavlja graki prozor i prostor u kojem se mogu prikazati c graki elementi c
GraphWin(title,width,height) instancira objekt klase GraphWin koji ima

naziv 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 vraa Point objekt na poziciji na kojoj korisnik klikne c

miem s
setCoords(x1,y1,x2,y2) postavlja koordinanti sustav prozora (x1,y1)

(x2,y2) dijagonala prozora Graphics objekti modul predstavlja geometrijske elemene toke, pravca, krunice, c z elipse, pravokutnika, poligona i teksta redom kao klase imenom Point, Line, Circle, Oval, Rectangle, Polygon,Text
setFill(color) postavlja boju interijera grakog objekta c setOutline(color) postavlja boju oruba geometrijskog objekta setWidth(pixels) metoda postavlja irinu oruba objekta na veliinu pixels s c draw(GraphWinObj) metoda crta objekt unutar GraphWinObj objekta undraw() brie objekt iz grakog prozora s c

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 vraa duplikat objekta koji je u neiscrtanom stanju c

Point metode
Point(x,y) stvara toku s danim koordinatama c getX(),getY() vraa x, odnosno y koordinatu c

Line metode
Line(pt1,pt2) metoda konstruira duinu od toaka pt1,pt2 z c getCenter() vraa polovite segmenta c s getP1(), getP2() vraa toke koje ine krajeve duine c c c z

Circle metode
Circle(center,radius) metoda konstuira krunicu s danim centrom i z

radijusom
getCenter() vrati toku centra krunice c z getRadius() vraa duljinu radijusa krunice c z getP1(), getP2() vraa 2 krajnje toke horizontalog promjera c c

Rectangular metode
Rectangle(pt1, pt2) konsturira pravokutnik iju dijagonalu tvore toke c c

pt1,pt2

Uvod u Python

Moduli u graphics.py paketu III


getCenter() sjecite dijagonala pravokutnika s getP1(), getP2() vraa kranje toke s kojima je instanciran objekt c c

Oval metode
Oval(pt1, pt2) konsturira elipsu u okviru odredenim dijagonalom ije su c

krajnje toke pt1,pt2. c


getCenter() vraa toku centra elipse c c getP1(), getP2() vraa kranje toke s kojima je instanciran objekt c c

Poylgon metode
Polygon(pt1, pt2, pt3, ...)

konstuira poligon iji vrhovi su toke c c

pt1,pt2,...
getPoints() vraa listu toaka koje tvore poligon c c

Text metode
Text(anchor, string) stvara objekt koji na toki anchor sadri string string. c z setText(string) getText()

postavlja tekst objekta na string string

vrati trenutni string

getAnchor() vrati toku na kojoj je postavljen tekst c setFace(family) promjena fonta u familiju family. Familiju fonta moemo z

birati izmedu helvetica, courier, times roman, i arial


setSize(point) promjena veliine slova na veliinu point c c

Uvod u Python

Moduli u graphics.py paketu IV


setStyle(style) promjena stila fonta na stil style koji moe biti normal, z

bold, italic, i bold italic

Uvod u Python

Primjer
Napravite graki prozor u kojem e biti prikazan uzorak za igru krui-krii. c c zc zc

Uvod u Python

Primjer
Napravite graki prozor u kojem e biti prikazan uzorak za igru krui-krii. c c zc zc
1 2 3 4 5 6 7 8 9 10 11 12 # create a default 200 x200 window from graphics import * win = GraphWin ( " Tic - Tac - Toe " ) # set coordinates to go from (0 ,0) in the lower left # to (3 ,3) in the upper right . win . setCoords (0.0 , 0.0 , 3.0 , 3.0) # Draw vertical lines Line ( Point (1 ,0) , Point (1 ,3)). draw ( win ) Line ( Point (2 ,0) , Point (2 ,3)). draw ( win ) # Draw horizontal lines Line ( Point (0 ,1) , Point (3 ,1)). draw ( win ) Line ( Point (0 ,2) , Point (3 ,2)). draw ( win )

Uvod u Python

Primjer
Napravite graki prozor u kojem ete s 3 klika mia denirati toke. Napravite objekt c c s c trokut uz pomo tih 3 toke i denirajte mu boju ispune i boju oruba. c c

Uvod u Python

Primjer
Napravite graki prozor u kojem ete s 3 klika mia denirati toke. Napravite objekt c c s c trokut uz pomo tih 3 toke i denirajte mu boju ispune i boju oruba. c c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 # program za crtanje trokuta from graphics import * def crtajTrokut (): win = GraphWin ( " Trokut " ) win . setCoords (0.0 , 0.0 , 10.0 , 10.0) # postovi koordinatni sustav message = Text ( Point (5 , 0.5) , " Oznacite 3 tocke : " ) # tekst komentara message . draw ( win ) # ucitaj i nacrtaj 3 tocke p1 = win . getMouse () p1 . draw ( win ) p2 = win . getMouse () p2 . draw ( win ) p3 = win . getMouse () p3 . draw ( win ) # koristi poligon objekt kako bi nacrtao trokut triangle = Polygon ( p1 , p2 , p3 ) triangle . setFill ( " red " ) # postavi ispunu triangle . setOutline ( " cyan " ) # postavi obrub triangle . draw ( win ) # nacrtal trokut # novi klik je izlaz message . setText ( " Klikni jos jednom na izlaz ... " ) win . getMouse ()

crtajTrokut ()

Uvod u Python

Primjer
Napravite graki program koji e unositi temperaturu u Celziusovim stupnjevima, a c c vraati vrijednost u Fahrenheit skali. c

Uvod u Python

Primjer
Napravite graki program koji e unositi temperaturu u Celziusovim stupnjevima, a c c vraati vrijednost u Fahrenheit skali. c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 # graficko sucelje za pretvaranje temperature iz celziusa u Farenheit temp . from graphics import * # ukljucivanje grafickog paketa def main (): win = GraphWin ( " Celsius Converter " , 300 , 200) win . setCoords (0.0 , 0.0 , 3.0 , 4.0) # Draw the interface Text ( Point (1 ,3) , " Celsius Temperature : " ). draw ( win ) Text ( Point (1 ,1) , " Fahrenheit Temperature : " ). draw ( win ) input = Entry ( Point (2 ,3) , 5) input . setText ( " 0.0 " ) input . draw ( win ) output = Text ( Point (2 ,1) , " " ) output . draw ( win ) button = Text ( Point (1.5 ,2.0) , " Convert It " ) button . draw ( win ) Rectangle ( Point (1 ,1.5) , Point (2 ,2.5)). draw ( win ) # pricekaj za klik misa win . getMouse () # pretvori vrijednost celsius = eval ( input . getText ()) fahrenheit = 9.0/5.0 * celsius + 32 # prikazi rezultati i promijeni tekst dugmeta output . setText ( " %0.1 f " % fahrenheit ) button . setText ( " Quit " ) # cekaj za klik i izlaz win . getMouse () win . close () main ()

Uvod u Python

Zadaci

Zadatak
Napiite graki program u Pythonu koji e imati input polja za upis parametara s c c a, b, c kvadratne funkcije f (x) = ax 2 + bx + c, a = 0 te granice domene l, r i nakon upisa vrijednosti ispisati koordinatni sustav u kojem e se nalaziti graf funkcije f (x) na c domeni [l, r ]. Napomena: Graf moete diskretno aproksimirati s tokama (xi , f (x)), i = 1, . . . , k z c gdje je k broj uzoraka i zatim toke grafa povezati duinama. c z

Uvod u Python

Zakljuak c

Sto dalje?

Minicourse: kratki uvod u Python, NIJE CIJELI KURS. Zahtjev na samostalni rad

uz preporuenu literaturu. c

Uvod u Python

Zakljuak c

Sto dalje?

Minicourse: kratki uvod u Python, NIJE CIJELI KURS. Zahtjev na samostalni rad

uz preporuenu literaturu. c
Pitanja iz Pythona ? Konzultacije u dogovoru sa asistentima.

Uvod u Python

Zakljuak c

Sto dalje?

Minicourse: kratki uvod u Python, NIJE CIJELI KURS. Zahtjev na samostalni rad

uz preporuenu literaturu. c
Pitanja iz Pythona ? Konzultacije u dogovoru sa asistentima. Python u primjeni ostale vjebe. z

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, Wiley Publishing, Inc., 2011. J. M. Zelle, Python: Introduction to Computer Science, 2003.

Você também pode gostar