Professional Documents
Culture Documents
PythonTutorial PDF
PythonTutorial PDF
Uvod u ra
cunalne mreze i usluge
Python
Python je interpreterski, interaktivni programski jezik koji podrzava nekoliko
programerskih paradigmi s naglaskom na citljiv kod.
Jezicne znacajke
Python
Python je interpreterski, interaktivni programski jezik koji podrzava nekoliko
programerskih paradigmi s naglaskom na citljiv kod.
2 na
cina rada:
Interaktivni rad u konzolu se upisuju naredbe programskog jezika koje se odmah
interpretiraju (izvrsavaju).
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 "
Primjer (Unos)
Napisite program koji
ce za uneseno ime napisati Dobrodosli, ime, u svijet Pythona.
# ime . py
ime = raw_input ( " Unesite ime : " ) # ime
print " Dobrodosli " + ime + " u svijet Pythona "
python ime . py
Numericki tipovi
cjelobrojni tip
Konverzija tipa
>>> 1 + 1
2 Neki tipovi se moraju eksplicitno konvertirati!
>>> a = 4
>>> 3/2.
brojevi kliznog zareza 1.5
>>> a = 3
>>> c = 2.1 >>> b = 2
>>> a/b
kompleksni tip brojeva (ugradeni tip!) 1
>>> a / float ( b )
>>> a =1.5+0.5 j 1.5
>>> a . real
1.5
>>> a . imag
0.5
boolean tip
>>> 3 > 4
False
>>> test = (3 > 4)
>>> test
False
>>> type ( test )
< type bool >
Ugradeni spremnici podataka
Python nudi mogu cnost koristenja ugradenih spremnika podataka u koje se mogu
spremati razli
citi objekti.
OO metode liste:
>>> print dir ( l )
[ __add__ , __class__ , __contains__ , __delattr__ , __delitem__ ,
__delslice__ , __doc__ , __eq__ , __format__ , __ge__ ,
_ _ g e tattribute__ , __getitem__ , __getslice__ , __gt__ , __hash__ ,
__iadd__ , __imul__ , __init__ , __iter__ , __le__ , __len__ , __lt__
, __mul__ , __ne__ , __new__ , __reduce__ , __reduce_ex__ , __repr__
, __reversed__ , __rmul__ , __setattr__ , __setitem__ , __setslice__
, __sizeof__ , __str__ , __subclasshook__ , append , count , extend ,
index , insert , pop , remove , reverse , sort ]
>>>
Stringovi
String je spremnik podataka koji zadrzi znakovni tip podatka.
Stringovi podrzavaju operacije kao i u liste.
>>> a = " hello , world ! "
>>> a [3:6] # 3 rd to 6 th ( excluded ) elements : elements 3 , 4 , 5
lo ,
>>> a [2:10:2] # Syntax : a [ start : stop : step ]
lo o
>>> a [::3] # every three characters , from beginning to end
hl r !
Python podrzava ve
cinu operatora i operacija koji su podrzani u ostalim programskim
jezicima:
Primjer
Napisite Python program koji
ce za unesene stranice trokuta a, b, c izra
cunati povrsinu
tog trokuta.
Primjeri
Primjer
Napisite Python program koji
ce za unesene stranice trokuta a, b, c izra
cunati povrsinu
tog trokuta.
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
Primjeri
Primjer
Napisite Python program koji
ce za unesene stranice trokuta a, b, c izra
cunati povrsinu
tog trokuta.
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
Napisite Python program koji
ce sortirati unesenu listu brojeva pomo
cu ugradene
funkcije sort().
Primjeri
Primjer
Napisite Python program koji
ce za unesene stranice trokuta a, b, c izra
cunati povrsinu
tog trokuta.
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
Napisite Python program koji
ce sortirati unesenu listu brojeva pomo
cu ugradene
funkcije sort().
if . . . then . . . else
if a == 1:
...: print (1)
...: elif a == 2:
...: print (2)
...: else :
...: print ( A lot )
...:
A lot
Naredbe iteracije
Ponavljaj uz uvjet . . .
While . . .
>>> z = 1 + 1 j
>>> while abs ( z ) < 100:
...: z = z **2 + 1
...:
>>> z
>>> ( -134+352 j )
For . . .
a = 10
for i in range (4) :
...: print ( i )
...:
0
1
2
3
for word in ( cool , powerful , readable ) :
...: print ( Python is % s % word )
...:
Python is cool
Python is powerful
Python is readable
Primjeri
suma =0.0
broj = input ( " Upisite broj " )
n =1 # brojimo elemente
print suma / n
Fibonacci
Primjer
Za dani n ispisite n Fibonaccijevih brojeva.
Fibonacci
Primjer
Za dani n ispisite n Fibonaccijevih brojeva.
Primjer
Definirajte funkciju koja vra
ca aposolutnu vrijednost broja.
def abs ( x ) :
if x <0:
return -x
else :
return x
Prosljedivanje po referenci?
Ukoliko je vrijednost promijenjiva, onda se moze promijeniti unutar funkcije.
Primjer
Definirajte funkciju koja
ce provjeravati je li broj prost i dodatnu funkciju koja
ce za
proslijedene brojeve ra
cunati samo sumu prostih brojeva.
Primjeri
Primjer (Aritmeticka sredina)
Funkcija aritmeti
cke sredine za proizvoljne brojeve.
Primjer
Definirajte funkciju koja
ce provjeravati je li broj prost i dodatnu funkciju koja
ce za
proslijedene brojeve ra
cunati samo sumu prostih brojeva.
import math
import math
def prime_sum (* brojevi ) :
def Prime ( broj ) :
suma =0.0
for p in range (2 , broj ) :
for x in brojevi :
if ( broj % p == 0) :
if Prime ( x ) :
return False
suma = suma + x
return True
return suma
Zadaci
Zadatak
Napisite Python program koji
ce aproksimirati broj tako da izra
cunate kona
cnu
sumu niza 4/1 4/3 + 4/5 4/7 + 4/9 4/11 + . . .. Korisnik treba unjeti broj n koji
predstavlja broj
clanova ovog niza.
Zadatak
Napisite Python program koji ce za uneseno ime i prezime generirati korisni
cko ime
tako da ga slozi kao string od prvog znaka imena i od prvih sedam znakova prezimena.
Ime i prezime moraju biti preba ceni u mala slova.
OOP objektno orijentirano programiranje
Definiranje klase:
class ime_klase [( klase roditelji ) ]:
izraz1
izraz2
...
def metoda1 () :
...
def metoda2 () :
...
...
sintaksa
Definiranje klase:
class ime_klase [( klase roditelji ) ]:
izraz1
izraz2
...
def metoda1 () :
...
def metoda2 () :
...
...
Primjer (Osoba)
Klasa koja sadrzi javne i privatne varijable.
# 7. OOP u Pythonu
osoba2 = Osoba ()
osoba2 . postaviIme ( Ivo )
osoba2 . pozdrav ()
print ( " Imena novih pythonista su % s i % s ! " %( osoba1 . getName () , osoba2 . getName () ) )
Inicijalizatori objekata
Za inicijalizaciju objekata koristimo posebnu funkciju zvanu konstruktor.
Primjer
Napisite Python klasu Pravokutnik u kojoj kontruktorom inicijalizirate vrijednosti
varijabli visina, sirina i metode koje ra
cunaju povrsinu odnosno opseg.
Inicijalizatori objekata
Za inicijalizaciju objekata koristimo posebnu funkciju zvanu konstruktor.
Primjer
Napisite Python klasu Pravokutnik u kojoj kontruktorom inicijalizirate vrijednosti
varijabli visina, sirina i metode koje ra
cunaju povrsinu odnosno opseg.
seed ()
class Pravokutnik () :
def __init__ ( self , sirina , duljina ) :
self . sirina = sirina
self . duljina = duljina
# glavni program
pravokutnici = []
class C (A , B ) : # Nasljedjuje 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 ()
class Filter :
def __init__ ( self ) :
self . blokirano =[]
def filter ( self , niz ) :
return [ x for x in niz if x not in self . blokirano ]
uzorak = Filter ()
print ( uzorak . filter ([1 ,2 ,3]) )
filteruzorak = SPAMFilter ()
print ( filteruzorak . filter ([ SPAM , SPAM ,1 ,4 ,2 , SPAM ,6 ,5]) )
Zadaci
Zadatak 1
1 Napisite Python program u kojem ce te definirati klasu Trokut koja u sebi sadrzi
zasti
cene atribute a, b, c i javne metode povrsina() i opseg() koje ce ra cunati
povrsinu odnosno opseg trokuta. Definirajte konstruktor koji ce inicijalizirati
objekt klase.
2 Definirajte Python klasu JednakokracniTrokut nasljedenu iz klase Trokut koji u
konstruktor prima samo parametre a, b i prosljeduje konstuktoru bazne klase.
Rjesenje.
# Trokut
import math
class Trokut :
" klasa koja definira trokut "
def __init__ ( self ,x ,y , z ) :
self . _a = x
self . _b = y
self . _c = z
class J e d n ak o k r a c n i T ro k u t ( Trokut ) :
def __init__ ( self ,a , b ) :
Trokut . __init__ ( self ,a ,b , b )
Podaci (varijable), funkcije, klase i objekti skupljaju se u module. Vise modula zajedno
Podaci (varijable), funkcije, klase i objekti skupljaju se u module. Vise modula zajedno
Podaci (varijable), funkcije, klase i objekti skupljaju se u module. Vise modula zajedno
Podaci (varijable), funkcije, klase i objekti skupljaju se u module. Vise modula zajedno
Moduli se mogu u
citati (importirati) koriste
ci alternativna imena, i to upotrebom
poveznice as.
Na primjer:
import os as sustav
import socket as mreza
sustav . chdir ( " .. " )
mreza . gethostname ()
...
import math as matematika
x = matematika . sqrt (2)
Zadaci
Zadatak 2
Napisite Python program u kojem ce definirati klasu za rad s racionalnim brojevima.
Koristeci operatore iz klase definirajte aritmeticke operacije s razlomcima.
Rjesenje.
class razlomak :
def __init__ ( self , num , denom = 1) :
self . numerator = int ( num )
self . denominator = int ( denom )
# aritmeticki operatori
def __add__ ( self , drugi ) : # operator s lijeva
num , denom = self . numerator * drugi . denominator + self . denominator * drugi .
numerator , self . denominator * drugi . denominator
d = gcd ( num , denom )
return razlomak ( num /d , denom / d )
def gcd (a , b ) :
if b ==0:
return a
return gcd (b , a % b )
Rjesenje.
# test . py
from razlomci import razlomak , gcd
a = razlomak (2 ,8)
b = razlomak (3 ,4)
print a + b
print a * b
GUI - rad s grafickim suceljem
Prakticna primjena OOP-a je implementacija struktura podataka grafi ckog prikaza.
Python u svojoj temeljnoj distribuciji sadrzi Tk biblioteku za rad s grafikom (Tk
interface=Tkinter).
GUI - rad s grafickim suceljem
Prakticna primjena OOP-a je implementacija struktura podataka grafi ckog prikaza.
Python u svojoj temeljnoj distribuciji sadrzi Tk biblioteku za rad s grafikom (Tk
interface=Tkinter).
Koristit
cemo graphics.py za rad s grafikom i ona u sebi sadrzi klasu koja je izvedena
iz klasa implementiranih u Tk biblioteci.
GUI - rad s grafickim suceljem
Prakticna primjena OOP-a je implementacija struktura podataka grafi ckog prikaza.
Python u svojoj temeljnoj distribuciji sadrzi Tk biblioteku za rad s grafikom (Tk
interface=Tkinter).
Koristit
cemo graphics.py za rad s grafikom i ona u sebi sadrzi klasu koja je izvedena
iz klasa implementiranih u Tk biblioteci.
setStyle(style) promjena stila fonta na stil style koji moze biti normal,
bold, italic, i bold italic
Objekti unosa omogu
cuju korisniku unos ili promjenu vrijednosti u grafi
cki element.
Entry(center, width) pozicionira tekstualni okvir na to
cki center koja ima
sirinu width
getAnchor() vra
ca to
cku na kojoj se objekt nalazi
getText() vra
ca tekst koji se nalazi u objektu
setText(string) azurira vrijednost teksta na string
Prikaz slike paket omogu
cava minimalnu mogucnost unosa slike (JPEG,GIF,PPM )
unutar GraphWin objekta. Neke od specifi
cnih metoda:
Image(center, filename) konstruira sliku na to
cki center iz datoteke
filename
getAnchor() vra
ca to
cku na kojoj se nalazi slika
Stvaranje boja paket omogu cuje koristenje standarne imenovane palete boja kao sto
je npr. red, purple, green, cyan,. . .
ili mjesanje RGB boja s metodom rgb color(r,g,b) gdje su r,g,b cjelobrojne
vrijednosti od 0 . . . 255 i odgovaraju redom crvenoj, zelenoj i plavoj boji.
Primjer
Napravite grafi
cki prozor u kojem
ce biti prikazan uzorak za igru kruzi
c-krizi
c.
Primjer
Napravite grafi
cki prozor u kojem
ce biti prikazan uzorak za igru kruzi
c-krizi
c.
def crtajTrokut () :
message = Text ( Point (5 , 0.5) , " Oznacite 3 tocke : " ) # tekst komentara
message . draw ( win )
crtajTrokut ()
Primjer
Napravite graficki program koji
ce unositi temperaturu u Celziusovim stupnjevima, a
vra
cati vrijednost u Fahrenheit skali.
Primjer
Napravite graficki program koji
ce unositi temperaturu u Celziusovim stupnjevima, a
vra
cati vrijednost u Fahrenheit skali.
main ()
Zadaci
Zadatak
Napisite grafi
cki programu u Pythonu koriste
ci graphics.py biblioteku kako bi
implementirali program crtanja grafa neke funkcije. Program uzima nekoliko
parametara iz ulaza: Python regularni izraz koji zadaje realnu funkciju jedne realne
varijable te granice domene l < r . Kad korisnik unese vrijednosti parametara program
crta graf funkcije f (x) na domeni [l, r ].
Napomena: Graf mozete diskretno aproksimirati s to ckama (xi , f (x)), i = 1, . . . , k
gdje je k broj uzoraka i zatim to
cke grafa povezati duzinama.
Zakljucak
dalje?
Sto
Minicourse: kratki uvod u Python, NIJE CIJELI KURS. Zahtjev na samostalni rad
uz preporu
cenu literaturu.
Zakljucak
dalje?
Sto
Minicourse: kratki uvod u Python, NIJE CIJELI KURS. Zahtjev na samostalni rad
uz preporu
cenu literaturu.
Pitanja iz Pythona ? Konzultacije u dogovoru sa asistentima.
Zakljucak
dalje?
Sto
Minicourse: kratki uvod u Python, NIJE CIJELI KURS. Zahtjev na samostalni rad
uz preporu
cenu literaturu.
Pitanja iz Pythona ? Konzultacije u dogovoru sa asistentima.
Python u primjeni ostale vjezbe.
Literatura
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.