v1 python tutorial

68
Uvod u Python Python – minicourse Raˇ cunalne mreˇ ze i usluge Odjel za matematiku 2012

Upload: djuka65

Post on 26-Oct-2015

62 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: V1 Python Tutorial

Uvod u Python

Python – minicourseRacunalne mreze i usluge

Odjel za matematiku 2012

Page 2: V1 Python Tutorial

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.

Page 3: V1 Python Tutorial

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 win32

2 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

Page 4: V1 Python Tutorial

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

2 ime=raw_input("Unesite ime:") #’ime’

3 print "Dobrodosli "+ime+" u svijet Pythona"

45 python ime.py

Page 5: V1 Python Tutorial

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

2 ime=raw_input("Unesite ime:") #’ime’

3 print "Dobrodosli "+ime+" u svijet Pythona"

45 python ime.py

Page 6: V1 Python Tutorial

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 literal

4 ’hello’

# String literal , niz znakova

1 [ 63, ’faks’, 8.6 ] # Listina , lista ili popis

2 ( 450, 320, ’600’ ) # n-terac

3 { ’a’:72, ’b’:1.4 } # rjecnik

Page 7: V1 Python Tutorial

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.

Page 8: V1 Python Tutorial

Uvod u Python

Malo igre sa spomenutim tipovima podataka...

Razliciti tipovi literala.

1 >>> type("Python") # string literal

2 <type ’str’>

3 >>> type (512)

# numericki literal

4 <type ’int’>

5 >>> k=2.178

# varijabla k

6 >>> type(k)

7 <type ’float’>

8 >>> type ({ ’a’:72, ’b’:1.4 })

9 <type ’dict’>

10 >>> z=2+3j

# varijabla z

11 >>> type(z)

12 <type ’complex ’>

U Python 3 verziji postoji tip podataka razlomci:

1 import fractions

2 x=fractions.Fraction (1,3) # 1/3

3 y=fractions.Fraction (1,2) #1/2

4 z=x+y # 5/6

Vrijednosti i funkcije iz modula:

1 >>>import math

2 >>> print math.pi, math.sin (2.3)

3 3.14159265359 0.745705212177

Page 9: V1 Python Tutorial

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 , x == y)

4. specijalizirane operacije na pojedinim tipovima podataka (ugradene metode uobjekte)

Page 10: V1 Python Tutorial

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

x¡¡y, x¿¿y Lijevi pomak, desni pomak

x&y Bitwise I (AND)

x ∧ y Bitwise eksluzivni ILI (XOR)

x—y Bitwise ILI (OR)

x < y, 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

Page 11: V1 Python Tutorial

Uvod u Python

Primjeri

PrimjerNapisite Python program koji ce za unesene stranice trokuta a, b, c izracunati povrsinutog trokuta.

1 import math

2 print("Racun za povrsinu trokuta ")

3 a = input("a:") #pretpostavka: nejednakost trokuta

4 b = input("b:")

5 c=input("c:")

67 s=(a+b+c)/2

8 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)

Page 12: V1 Python Tutorial

Uvod u Python

Primjeri

PrimjerNapisite Python program koji ce za unesene stranice trokuta a, b, c izracunati povrsinutog trokuta.

1 import math

2 print("Racun za povrsinu trokuta ")

3 a = input("a:") #pretpostavka: nejednakost trokuta

4 b = input("b:")

5 c=input("c:")

67 s=(a+b+c)/2

8 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)

Page 13: V1 Python Tutorial

Uvod u Python

Primjeri

PrimjerNapisite Python program koji ce za unesene stranice trokuta a, b, c izracunati povrsinutog trokuta.

1 import math

2 print("Racun za povrsinu trokuta ")

3 a = input("a:") #pretpostavka: nejednakost trokuta

4 b = input("b:")

5 c=input("c:")

67 s=(a+b+c)/2

8 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)

Page 14: V1 Python Tutorial

Uvod u Python

Primjeri

PrimjerNapisite Python program koji ce za unesene stranice trokuta a, b, c izracunati povrsinutog trokuta.

1 import math

2 print("Racun za povrsinu trokuta ")

3 a = input("a:") #pretpostavka: nejednakost trokuta

4 b = input("b:")

5 c=input("c:")

67 s=(a+b+c)/2

8 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)

Page 15: V1 Python Tutorial

Uvod u Python

Primjeri

PrimjerNapisite Python program koji ce za unesene stranice trokuta a, b, c izracunati povrsinutog trokuta.

1 import math

2 print("Racun za povrsinu trokuta ")

3 a = input("a:") #pretpostavka: nejednakost trokuta

4 b = input("b:")

5 c=input("c:")

67 s=(a+b+c)/2

8 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)

Page 16: V1 Python Tutorial

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)

Page 17: V1 Python Tutorial

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

5 broj=input("Upisite broj")

6 n=1 #brojimo elemente

78 while (broj !=0):

9 broj=input("Upisite broj:")

10 n+=1

11 suma+=broj

1213 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, 1

4 while b < n:

5 result.append(b)

6 a, b = b, a+b

78 print "Fibonaccijevi brojevi: "

9 for broj in result:

10 print broj , " "

Page 18: V1 Python Tutorial

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

5 broj=input("Upisite broj")

6 n=1 #brojimo elemente

78 while (broj !=0):

9 broj=input("Upisite broj:")

10 n+=1

11 suma+=broj

1213 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, 1

4 while b < n:

5 result.append(b)

6 a, b = b, a+b

78 print "Fibonaccijevi brojevi: "

9 for broj in result:

10 print broj , " "

Page 19: V1 Python Tutorial

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

5 broj=input("Upisite broj")

6 n=1 #brojimo elemente

78 while (broj !=0):

9 broj=input("Upisite broj:")

10 n+=1

11 suma+=broj

1213 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, 1

4 while b < n:

5 result.append(b)

6 a, b = b, a+b

78 print "Fibonaccijevi brojevi: "

9 for broj in result:

10 print broj , " "

Page 20: V1 Python Tutorial

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<0:

3 return -x

4 else:

5 return x

67 print abs(-5) # ispisuje 5

Page 21: V1 Python Tutorial

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=0

3 suma =0.0

4 for x in brojevi:

5 suma+=x

6 n+=1

7 return suma/n

8 print Mean(2,2,1,6,9,4,7,1,3)

Page 22: V1 Python Tutorial

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 math

23 def Prime(broj):

4 for p in range(2,broj):

5 if (broj % p == 0):

6 return False

7 return True

1 import math

23 def prime_sum (* brojevi ):

4 suma =0.0

5 for x in brojevi:

6 if Prime(x):

7 suma=suma+x

8 return suma

Page 23: V1 Python Tutorial

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 math

23 def Prime(broj):

4 for p in range(2,broj):

5 if (broj % p == 0):

6 return False

7 return True

1 import math

23 def prime_sum (* brojevi ):

4 suma =0.0

5 for x in brojevi:

6 if Prime(x):

7 suma=suma+x

8 return suma

Page 24: V1 Python Tutorial

Uvod u Python

Zadaci

ZadatakNapisite Python program koji ce aproksimirati broj π 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.

Page 25: V1 Python Tutorial

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)

Page 26: V1 Python Tutorial

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)

Page 27: V1 Python Tutorial

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

Page 28: V1 Python Tutorial

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

Page 29: V1 Python Tutorial

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

Page 30: V1 Python Tutorial

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

Page 31: V1 Python Tutorial

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

Page 32: V1 Python Tutorial

Uvod u Python

sintaksa

Definiranje klase:

1 class ime_klase [(klase roditelji )]:

2 izraz1

3 izraz2

4 ...

5 def metoda1 ():

6 ...

7 def metoda2 ():

8 ...

9 ...

ilustracija: atributi, funkcije, . . .

1 >>> class Moja_klasa:

2 ... x=23

3 ...

4 >>> objekt1=Moja_klasa ()

5 >>> objekt1.x=51

6 >>> print(objekt1.x)

7 51

8 >>> objekt2=Moja_klasa ()

9 >>> print(objekt2.x)

10 23

Provjera da li neki objekt instanca neke klase:

1 >>> objekt3 =5

2 >>> isinstance(objekt1 ,Moja_klasa)

3 True

4 >>> isinstance(objekt3 ,Moja_klasa)

5 False

Page 33: V1 Python Tutorial

Uvod u Python

sintaksa

Definiranje klase:

1 class ime_klase [(klase roditelji )]:

2 izraz1

3 izraz2

4 ...

5 def metoda1 ():

6 ...

7 def metoda2 ():

8 ...

9 ...

ilustracija: atributi, funkcije, . . .

1 >>> class Moja_klasa:

2 ... x=23

3 ...

4 >>> objekt1=Moja_klasa ()

5 >>> objekt1.x=51

6 >>> print(objekt1.x)

7 51

8 >>> objekt2=Moja_klasa ()

9 >>> print(objekt2.x)

10 23

Provjera da li neki objekt instanca neke klase:

1 >>> objekt3 =5

2 >>> isinstance(objekt1 ,Moja_klasa)

3 True

4 >>> isinstance(objekt3 ,Moja_klasa)

5 False

Page 34: V1 Python Tutorial

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 Pythonu

23 # jednostavni primjer klase i instanciranja

45 class Osoba (): #definiranje klase

6 "klasa s kojom instanciramo ’osobe’"

7 def postaviIme(self ,ime): #metode

8 self.__ime=ime #privatni atributi

9 def dajIme(self):

10 return self.__ime

11 def pozdrav(self):

12 print("Dobrodosli , gdine %s u svijet Pythona!" %self.name)

1314 osoba1=Osoba() #instanciranje objekta klase Osoba

15 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 ()))

Page 35: V1 Python Tutorial

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 Pythonu

23 # jednostavni primjer klase i instanciranja

45 class Osoba (): #definiranje klase

6 "klasa s kojom instanciramo ’osobe’"

7 def postaviIme(self ,ime): #metode

8 self.__ime=ime #privatni atributi

9 def dajIme(self):

10 return self.__ime

11 def pozdrav(self):

12 print("Dobrodosli , gdine %s u svijet Pythona!" %self.name)

1314 osoba1=Osoba() #instanciranje objekta klase Osoba

15 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 ()))

Page 36: V1 Python Tutorial

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 stranicama

2 from random import *

3 import time

45 seed()

67 class Pravokutnik ():

8 def __init__(self ,sirina ,duljina ):

9 self.sirina=sirina

10 self.duljina=duljina

1112 def povrsina(self):

13 return self.duljina*self.sirina

1415 def opseg(self):

16 return 2*( self.duljina+self.sirina)

171819 # glavni program

2021 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 ())

Page 37: V1 Python Tutorial

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 stranicama

2 from random import *

3 import time

45 seed()

67 class Pravokutnik ():

8 def __init__(self ,sirina ,duljina ):

9 self.sirina=sirina

10 self.duljina=duljina

1112 def povrsina(self):

13 return self.duljina*self.sirina

1415 def opseg(self):

16 return 2*( self.duljina+self.sirina)

171819 # glavni program

2021 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 ())

Page 38: V1 Python Tutorial

Uvod u Python

Nasljedivanje

Nasljedivanje je mehanizam stvaranja novih klasa koje specijaliziraju ili mijenjajuponasanje postojece klase.

1 class A:

2 varA = 42

3 def method1(self):

4 print("Class A : method1")

5 class B:

6 varB = 37

7 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 B

13 varC = 3.3

14 def method2(self):

15 print("Klasa B: override :-)")

16 def method3(self):

17 print("Class C : method3")

1819 class D(A):

20 varD =100

21 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 varA

29 objekt3.varA # valjan ispis: 42

Page 39: V1 Python Tutorial

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]))

Page 40: V1 Python Tutorial

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.

Page 41: V1 Python Tutorial

Uvod u Python

Rjesenje.

1 # Trokut

23 import math

45 class Trokut:

6 "klasa koja definira trokut"

7 def __init__(self ,x,y,z):

8 self._a=x

9 self._b=y

10 self._c=z

1112 def opseg(self):

13 return self._a+self._b+self._c

1415 def povrsina(self):

16 s=(self._a+self._b+self._c)/2.0

17 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 programa

24 trokut1=Trokut (3,4,5)

25 trokut2=JednakokracniTrokut (4,3)

26 print "povrsina trokut1 = ",trokut1.povrsina ()

27 print "povrsina trokut2 = ",trokut2.povrsina ()

Page 42: V1 Python Tutorial

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

Page 43: V1 Python Tutorial

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

Page 44: V1 Python Tutorial

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

Page 45: V1 Python Tutorial

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

Page 46: V1 Python Tutorial

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

Page 47: V1 Python Tutorial

Uvod u Python

Biblioteke

Primjer upotrebe import:

Prva programska skripta:

1 # datoteka: primjer.py

2 a = 37 # Varijabla

3 def A: # Funkcija

4 print("Ja sam u A")

5 class K: # Klasa

6 def B(self):

7 print("Ja sam u K.B")

8 b = K() # Tvorba instance

uvoz u drugu programsku skriptu:

1 import sys

2 # sys.path.append () # radni folder

3 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 modula

6 c = primjer.K() # Dohvaca i izvodi klasu iz modula , tvorba objekta

Page 48: V1 Python Tutorial

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 sustav

2 import socket as mreza

3 sustav.chdir("..")

4 mreza.gethostname ()

5 ...

6 import math as matematika

7 x=matematika.sqrt (2)

Page 49: V1 Python Tutorial

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 .

Page 50: V1 Python Tutorial

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 lijeva

11 return Complex(self.real + drugi.real , self.imag + drugi.imag)

12 def __radd__(self ,drugi): # operator s desna

13 return Complex.__add__(drugi ,self)

14 # other - self

15 def __mul__(self ,drugi):

16 pass

17 def __rmul__(self ,drugi):

18 pass

19 def __coerce__(self , drugi):

20 if isinstance(drugi , Complex ):

21 return self ,drugi

2223 try: # Provjeriti ako se moze pretvoriti u float

24 return self , Complex(float(drugi))

25 except ValueError:

26 pass

2728 # testComplex.py

2930 from Complex import Complex

31 u=Complex (1,2)

32 v=Complex (2,-3)

33 x=3

34 print u+v

35 print u+x

Page 51: V1 Python Tutorial

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

Page 52: V1 Python Tutorial

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

Page 53: V1 Python Tutorial

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

Page 54: V1 Python Tutorial

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 kliknemisem

• 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

Page 55: V1 Python Tutorial

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 stanju

Point metode

• Point(x,y) – stvara tocku s danim koordinatama

• getX(),getY() – vraca x , odnosno y koordinatu

Line metode

• Line(pt1,pt2) – metoda konstruira duzinu od tocaka pt1,pt2

• getCenter() – vraca poloviste segmenta

• getP1(),

• getP2() – vraca tocke koje cine krajeve duzine

Circle 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 promjera

Rectangular metode

• Rectangle(pt1, pt2) – konsturira pravokutnik ciju dijagonalu tvore tockept1,pt2

Page 56: V1 Python Tutorial

Uvod u Python

Moduli u graphics.py paketu III

• getCenter() – sjeciste dijagonala pravokutnika

• getP1(), getP2() – vraca kranje tocke s kojima je instanciran objekt

Oval 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 objekt

Poylgon metode

• Polygon(pt1, pt2, pt3, ...) – konstuira poligon ciji vrhovi su tockept1,pt2,...

• getPoints() – vraca listu tocaka koje tvore poligon

Text 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 mozemobirati izmedu ’helvetica’, ’courier’, ’times roman’, i ’arial’

• setSize(point) – promjena velicine slova na velicinu point

Page 57: V1 Python Tutorial

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 slika

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

Page 58: V1 Python Tutorial

Uvod u Python

PrimjerNapravite graficki prozor u kojem ce biti prikazan uzorak za igru ’kruzic-krizic’.

1 # create a default 200 x200 window

2 from graphics import *

3 win = GraphWin("Tic -Tac -Toe")

4 # set coordinates to go from (0,0) in the lower left

5 # to (3,3) in the upper right.

6 win.setCoords (0.0, 0.0, 3.0, 3.0)

7 # Draw vertical lines

8 Line(Point(1,0), Point (1 ,3)). draw(win)

9 Line(Point(2,0), Point (2 ,3)). draw(win)

10 # Draw horizontal lines

11 Line(Point(0,1), Point (3 ,1)). draw(win)

12 Line(Point(0,2), Point (3 ,2)). draw(win)

Page 59: V1 Python Tutorial

Uvod u Python

PrimjerNapravite graficki prozor u kojem ce biti prikazan uzorak za igru ’kruzic-krizic’.

1 # create a default 200 x200 window

2 from graphics import *

3 win = GraphWin("Tic -Tac -Toe")

4 # set coordinates to go from (0,0) in the lower left

5 # to (3,3) in the upper right.

6 win.setCoords (0.0, 0.0, 3.0, 3.0)

7 # Draw vertical lines

8 Line(Point(1,0), Point (1 ,3)). draw(win)

9 Line(Point(2,0), Point (2 ,3)). draw(win)

10 # Draw horizontal lines

11 Line(Point(0,1), Point (3 ,1)). draw(win)

12 Line(Point(0,2), Point (3 ,2)). draw(win)

Page 60: V1 Python Tutorial

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 trokuta

3 from graphics import *

45 def crtajTrokut ():

67 win = GraphWin("Trokut")

8 win.setCoords (0.0, 0.0, 10.0, 10.0) # postovi koordinatni sustav

910 message = Text(Point(5, 0.5), "Oznacite 3 tocke:") # tekst komentara

11 message.draw(win)

1213 # ucitaj i nacrtaj 3 tocke

14 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 trokut

22 triangle = Polygon(p1 ,p2,p3)

23 triangle.setFill("red") # postavi ispunu

24 triangle.setOutline("cyan") # postavi obrub

25 triangle.draw(win) # nacrtal trokut

2627 # novi klik je izlaz

28 message.setText("Klikni jos jednom na izlaz ...")

29 win.getMouse ()

303132 crtajTrokut ()

Page 61: V1 Python Tutorial

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 trokuta

3 from graphics import *

45 def crtajTrokut ():

67 win = GraphWin("Trokut")

8 win.setCoords (0.0, 0.0, 10.0, 10.0) # postovi koordinatni sustav

910 message = Text(Point(5, 0.5), "Oznacite 3 tocke:") # tekst komentara

11 message.draw(win)

1213 # ucitaj i nacrtaj 3 tocke

14 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 trokut

22 triangle = Polygon(p1 ,p2,p3)

23 triangle.setFill("red") # postavi ispunu

24 triangle.setOutline("cyan") # postavi obrub

25 triangle.draw(win) # nacrtal trokut

2627 # novi klik je izlaz

28 message.setText("Klikni jos jednom na izlaz ...")

29 win.getMouse ()

303132 crtajTrokut ()

Page 62: V1 Python Tutorial

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 paketa

4 def main ():

5 win = GraphWin("Celsius Converter", 300, 200)

6 win.setCoords (0.0, 0.0, 3.0, 4.0)

7 # Draw the interface

8 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 misa

20 win.getMouse ()

21 # pretvori vrijednost

22 celsius = eval(input.getText ())

23 fahrenheit = 9.0/5.0 * celsius + 32

24 # prikazi rezultati i promijeni tekst dugmeta

25 output.setText("%0.1f" % fahrenheit)

26 button.setText("Quit")

27 # cekaj za klik i izlaz

28 win.getMouse ()

29 win.close()

3031 main()

Page 63: V1 Python Tutorial

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 paketa

4 def main ():

5 win = GraphWin("Celsius Converter", 300, 200)

6 win.setCoords (0.0, 0.0, 3.0, 4.0)

7 # Draw the interface

8 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 misa

20 win.getMouse ()

21 # pretvori vrijednost

22 celsius = eval(input.getText ())

23 fahrenheit = 9.0/5.0 * celsius + 32

24 # prikazi rezultati i promijeni tekst dugmeta

25 output.setText("%0.1f" % fahrenheit)

26 button.setText("Quit")

27 # cekaj za klik i izlaz

28 win.getMouse ()

29 win.close()

3031 main()

Page 64: V1 Python Tutorial

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.

Page 65: V1 Python Tutorial

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.

Page 66: V1 Python Tutorial

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.

Page 67: V1 Python Tutorial

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.

Page 68: V1 Python Tutorial

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.