Upload
lethuy
View
237
Download
6
Embed Size (px)
Citation preview
Python – kratak uvodUvod u racunalne mreze i usluge
Odjel za matematiku, 2014.
Jezicne znacajke
Python
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))
prilagodene distribucije: Enthought Python, Python(x,y), ActivePython,. . .
bogata biblioteka programa - Python Cheese Shop - PyPI.
Jezicne znacajke
Python
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))
prilagodene distribucije: Enthought Python, Python(x,y), ActivePython,. . .
bogata biblioteka programa - Python Cheese Shop - PyPI.
Izvodenje python programa
2 nacina rada:
Interaktivni rad – u konzolu se upisuju naredbe programskog jezika koje se odmahinterpretiraju (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"
Skriptni rad – Programi se spremaju u skripte a onda se kao Unix/Linux iliWindows skripte pozivaju iz sistemske linije.
python imeskripte.py
Ugradeni kod – izvodenje Python koda u drugim programskim jezicima
Varijable i unos
U Pythonu nema ekplicitine deklaracije tipa varijable, interpreter na temeljuincijalizacije prepoznaje tip.
Ispis na konzolu: print naredba
Primjer (”Hello, World!”)
>>> 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”.
#ime.py
ime=raw_input("Unesite ime:") #’ime’
print "Dobrodosli "+ime+" u svijet Pythona"
python ime.py
Numericki tipovi
cjelobrojni tip
>>> 1 + 1
2
>>> a = 4
brojevi kliznog zareza
>>> c = 2.1
kompleksni tip brojeva (ugradeni tip!)
>>> a=1.5+0.5j
>>> a.real
1.5
>>> a.imag
0.5
boolean tip
>>> 3 > 4
False
>>> test = (3 > 4)
>>> test
False
>>> type(test)
<type ’bool’>
Konverzija tipa
Neki tipovi se moraju eksplicitno konvertirati!
>>> 3/2.
1.5
>>> a = 3
>>> b = 2
>>> a/b
1
>>> a/float(b)
1.5
Ugradeni spremnici podataka
Python nudi mogucnost koristenja ugradenih spremnika podataka u koje se moguspremati razliciti objekti.
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.
Liste
Uredena lista podataka, koje moze biti sastavljena od objekata razlicitog tipa.Operacije:
indeksiranje: pristup pojedinim objektima sadrzanim u listi
izrezivanje (slicing)
dodavanje i brisanje elemenata
pretvaranje u druge tipove podataka
Operacije preko operatora:
>>> l = [1, 2, 3, 4, 5]
>>> type(l)
<type ’list’>
>>> l[2]
3
>>> l[-1]
5
>>> l[-2]
4
>>> l[3:]
[4, 5]
>>> l[:3]
[1, 2, 3]
>>> l[::2]
[1, 3, 5]
Liste su promijenjive strukture podataka
>>> l[0] = 28
>>> l
[28, 2, 3, 4, 5]
>>> l[2:4] = [3, 8]
>>> l
[28, 2, 3, 8, 5]
Liste mogu sadrzavati razlicite tipovepodataka
>>> l = [3, 2, ’hello ’]
>>> l
[3, 2, ’hello ’]
>>> l[1], l[2]
(2, ’hello ’)
ListeOperacije preko OO metoda.
>>> l = [1, 2, 3, 4, 5]
>>> l.append (6)
>>> l
[1, 2, 3, 4, 5, 6]
>>> l.pop()
6
>>> l
[1, 2, 3, 4, 5]
>>> l.extend ([6, 7])
>>> l
[1, 2, 3, 4, 5, 6, 7]
>>> l.reverse ()
>>> l
[7, 6, 5, 4, 3, 2, 1]
>>>
OO metode liste:
>>> print dir(l)
[’__add__ ’, ’__class__ ’, ’__contains__ ’, ’__delattr__ ’, ’__delitem__ ’, ’
__delslice__ ’, ’__doc__ ’, ’__eq__ ’, ’__format__ ’, ’__ge__ ’, ’
__getattribute__ ’, ’__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’]
>>>
StringoviString je spremnik podataka koji zadrzi znakovni tip podatka.Stringovi podrzavaju operacije kao i u liste.
>>> a = "hello , world!"
>>> a[3:6] # 3rd to 6th (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!’
String je nepromijenjiv (immutable) spremnik podataka.
>>> a="hello , world"
>>> a[2]=’c’
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module >
a[2]=’c’
TypeError: ’str’ object does not support item assignment
>>>
ali postoje motode koje dopustaje odredene izmjene:
>>> a.replace(’l’, ’z’, 1)
’hezlo , world’
>>>
n-terci i skupovi
n-terac predstavlja nepromijenjivu listu.
>>> t = 12345, 54321, ’hello!’
>>> t[0]
12345
>>> t
(12345 , 54321, ’hello!’)
>>> u = (0, 2)
Skupovi sadrze neuredene, jedinstvene elemente.
>>> s = set((’a’, ’b’, ’c’, ’a’))
>>> s
set([’a’, ’c’, ’b’])
>>> s.difference ((’a’, ’b’))
set([’c’])
Rjecnici
Rjecnik kao spremnik podataka poopcuje listu - indeksiranje elemenata moze se ucinitibilo kojim tipom podatka.
>>> tel = {’emmanuelle ’: 5752, ’sebastian ’: 5578}
>>> tel[’francis ’] = 5915
>>> tel
{’sebastian ’: 5578, ’francis ’: 5915, ’emmanuelle ’: 5752}
>>> tel[’sebastian ’]
5578
>>> tel.keys()
[’sebastian ’, ’francis ’, ’emmanuelle ’]
>>> tel.values ()
[5578, 5915, 5752]
>>> ’francis ’ in tel
True
Vrijednosti pridruzeni kljucevima mogu biti razlicitog tipa:
>>> d = {’a’:1, ’b’:2, 3:’hello’}
>>> d
{’a’: 1, 3: ’hello’, ’b’: 2}
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)
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
Primjeri
Primjer
Napisite Python program koji ce za unesene stranice trokuta a, b, c izracunati povrsinutog 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 pomocu ugradenefunkcije sort().
lista =[2,6,1,4,5,7]
lista.sort()
print lista
Primjeri
Primjer
Napisite Python program koji ce za unesene stranice trokuta a, b, c izracunati povrsinutog 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 pomocu ugradenefunkcije sort().
lista =[2,6,1,4,5,7]
lista.sort()
print lista
Primjeri
Primjer
Napisite Python program koji ce za unesene stranice trokuta a, b, c izracunati povrsinutog 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 pomocu ugradenefunkcije sort().
lista =[2,6,1,4,5,7]
lista.sort()
print lista
Primjeri
Primjer
Napisite Python program koji ce za unesene stranice trokuta a, b, c izracunati povrsinutog 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 pomocu ugradenefunkcije sort().
lista =[2,6,1,4,5,7]
lista.sort()
print lista
Kontrolne strukture
Kontrolne strukture koje podrzava Python:
if . . . then . . . else
if a == 1:
...: print (1)
...: elif a == 2:
...: print (2)
...: else:
...: print(’A lot’)
...:
A lot
Naredbe iteracijePonavljaj uz uvjet . . .
While . . .
>>> z = 1 + 1j
>>> while abs(z) < 100:
...: z = z**2 + 1
...:
>>> z
>>> ( -134+352j)
Iterativno izvodenje blok naredbi upravljen od iteracijskog izraza:
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
Primjer (Aritmeticka sredina)
Za dani niz podataka treba odrediti njegovu aritmeticku sredinu.
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
Primjeri
Primjer (Aritmeticka sredina)
Za dani niz podataka treba odrediti njegovu aritmeticku sredinu.
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
Fibonacci
Primjer
Za dani n ispisite n Fibonaccijevih brojeva.
n=eval(input("Koliko zelite fibonaccijevih 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 , " "
Fibonacci
Primjer
Za dani n ispisite n Fibonaccijevih brojeva.
n=eval(input("Koliko zelite fibonaccijevih 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 , " "
Funkcije
Funkcije su blokovi naredbi koji primaju vrijednosti ’izvana’ i vracaju vrijednostinjihova racunanja.Procedure su funkcije koje ne vracaju podatke.
>>> def test():
....: print(’in test function ’)
....:
....:
>>> test()
in test function
Primjer
Definirajte funkciju koja vraca aposolutnu vrijednost broja.
def abs(x):
if x<0:
return -x
else:
return x
print abs(-5) # ispisuje 5
Funkcijski argumenti
Parametri su varijable cije vrijednosti uzima funkcija. Parametri se prosljeduju kaoreference na objekte koji sadrze vrijednost varijable.
Prosljedivanje po referenci?
Ukoliko je vrijednost promijenjiva, onda se moze promijeniti unutar funkcije.
>>> def try_to_modify(x, y, z):
... x = 23
... y.append (42)
... z = [99] # new reference
... print(x)
... print(y)
... print(z)
...
>>> a = 77 # immutable variable
>>> b = [99] # mutable variable
>>> c = [28]
>>> try_to_modify(a, b, c)
23
[99, 42]
[99]
>>> print(a)
77
>>> print(b)
[99, 42]
>>> print(c)
[28]
Globalne i lokalne varijable
Varijable deklarirane izvan funkcija mogu biti referencirane u funkcijama, ali ne mogubiti mijenjane.Ukoliko se koristi global kljucna rijec onda je unutar funkcija moguce mijenjativrijednost tih varijabli.
>>> x = 5
>>> def addx(y):
.....: return x + y
.....:
>>> addx (10)
>>> 15
>>> def setx(y):
.....: x = y
.....: print(’x is %d’ % x)
.....:
.....:
>>> setx (10)
x is 10
>>> x
>>> 5
>>> def setx(y):
.....: global x
.....: x = y
.....: print(’x is %d’ % x)
.....:
.....:
In [122]: setx (10)
x is 10
>>> x
>>> 10
Svojstva funkcija
Poseban tip argumenata:
*args – bilo koji broj pozicioniranih argumenata spremljenih u nterac.
*kwargs – bilo koji broj kljuceva spremljenih u rjecnik
>>> def variable_args (*args , ** kwargs):
....: print ’args is’, args
....: print ’kwargs is’, kwargs
....:
>>> variable_args(’one’, ’two’, x=1, y=2, z=3)
args is (’one’, ’two’)
kwargs is {’y’: 2, ’x’: 1, ’z’: 3}
Funkcije su objekti – kao takvi imaju svojstva da mogu biti:
pridjeljeni varijabli
element liste (ili neke druge kolekcije)
argument druge funkcije
>>> va = variable_args
>>> va(’three’, x=1, y=2)
args is (’three ’,)
kwargs is {’y’: 2, ’x’: 1}
Funkcije kao metode – funkcije unutar klasa.
Primjeri
Primjer (Aritmeticka sredina)
Funkcija aritmeticke sredine za proizvoljne brojeve.
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)
Primjer
Definirajte funkciju koja ce provjeravati je li broj prost i dodatnu funkciju koja ce zaproslijedene brojeve racunati samo sumu prostih brojeva.
import math
def Prime(broj):
for p in range(2,broj):
if (broj % p == 0):
return False
return True
import math
def prime_sum (* brojevi):
suma =0.0
for x in brojevi:
if Prime(x):
suma=suma+x
return suma
Primjeri
Primjer (Aritmeticka sredina)
Funkcija aritmeticke sredine za proizvoljne brojeve.
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)
Primjer
Definirajte funkciju koja ce provjeravati je li broj prost i dodatnu funkciju koja ce zaproslijedene brojeve racunati samo sumu prostih brojeva.
import math
def Prime(broj):
for p in range(2,broj):
if (broj % p == 0):
return False
return True
import math
def prime_sum (* brojevi):
suma =0.0
for x in brojevi:
if Prime(x):
suma=suma+x
return suma
Zadaci
Zadatak
Napisite 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.
Zadatak
Napisite 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.
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)
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
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
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
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
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
sintaksa
Definiranje klase:
class ime_klase [(klase roditelji)]:
izraz1
izraz2
...
def metoda1 ():
...
def metoda2 ():
...
...
ilustracija: atributi, funkcije, . . .
>>> class Moja_klasa:
... x=23
...
>>> objekt1=Moja_klasa ()
>>> objekt1.x=51
>>> print(objekt1.x)
51
>>> objekt2=Moja_klasa ()
>>> print(objekt2.x)
23
Provjera da li neki objekt instanca neke klase:
>>> objekt3 =5
>>> isinstance(objekt1 ,
Moja_klasa)
True
>>> isinstance(objekt3 ,
Moja_klasa)
False
sintaksa
Definiranje klase:
class ime_klase [(klase roditelji)]:
izraz1
izraz2
...
def metoda1 ():
...
def metoda2 ():
...
...
ilustracija: atributi, funkcije, . . .
>>> class Moja_klasa:
... x=23
...
>>> objekt1=Moja_klasa ()
>>> objekt1.x=51
>>> print(objekt1.x)
51
>>> objekt2=Moja_klasa ()
>>> print(objekt2.x)
23
Provjera da li neki objekt instanca neke klase:
>>> objekt3 =5
>>> isinstance(objekt1 ,
Moja_klasa)
True
>>> isinstance(objekt3 ,
Moja_klasa)
False
EnkapsulacijaPython nema mehanizam enkapsuliranja podataka kao drugi programski jezici. Praksaenkapsulacije je sugestivna: varijable koje bi trebale biti privatne sugeriraju se da sutavke koristenjem podcrta (__) u prefiksu imena metoda/atributa:
self.__identifikator # privatna varijabla klase (private)
self.identifikator # javna varijabla klase (public)
Primjer (Osoba)
Klasa koja sadrzi javne i privatne varijable.
#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 ()))
EnkapsulacijaPython nema mehanizam enkapsuliranja podataka kao drugi programski jezici. Praksaenkapsulacije je sugestivna: varijable koje bi trebale biti privatne sugeriraju se da sutavke koristenjem podcrta (__) u prefiksu imena metoda/atributa:
self.__identifikator # privatna varijabla klase (private)
self.identifikator # javna varijabla klase (public)
Primjer (Osoba)
Klasa koja sadrzi javne i privatne varijable.
#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 ()))
Inicijalizatori objekataZa inicijalizaciju objekata koristimo posebnu funkciju zvanu konstruktor.
Primjer
Napisite Python klasu Pravokutnik u kojoj kontruktorom inicijalizirate vrijednostivarijabli visina, sirina i metode koje racunaju povrsinu odnosno opseg.
# 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 %.2f, a opseg %.2f " % (pravokutnik.povrsina
(),pravokutnik.opseg())
Inicijalizatori objekataZa inicijalizaciju objekata koristimo posebnu funkciju zvanu konstruktor.
Primjer
Napisite Python klasu Pravokutnik u kojoj kontruktorom inicijalizirate vrijednostivarijabli visina, sirina i metode koje racunaju povrsinu odnosno opseg.
# 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 %.2f, a opseg %.2f " % (pravokutnik.povrsina
(),pravokutnik.opseg())
NasljedivanjeNasljedivanje je mehanizam stvaranja novih klasa koje specijaliziraju ili mijenjajuponasanje postojece klase.
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): # 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()
# print(objekt2.varA) # greska: objekt2 nema atribut varA
objekt3.varA # valjan ispis: 42
Nasljedivanje
Primjer klase i podklase:
Primjer (’SPAM’ filter)
Napisite Python klasu koja ce dani niz procistiti od odredene rijeci.
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]))
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.
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
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 JednakokracniTrokut(Trokut):
def __init__(self ,a,b):
Trokut.__init__(self ,a,b,b)
#glavni dio programa
trokut1=Trokut (3,4,5)
trokut2=JednakokracniTrokut (4,3)
print "povrsina trokut1 = ",trokut1.povrsina ()
print "povrsina trokut2 = ",trokut2.povrsina ()
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.
>>> import this # Python zen -mudrost
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.
>>> import this # Python zen -mudrost
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.
>>> import this # Python zen -mudrost
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.
>>> import this # Python zen -mudrost
Biblioteke
Primjer upotrebe import:
Prva programska skripta:
# datoteka: primjer.py
a = 37 # Varijabla
def A: # Funkcija
print("Ja sam u A")
class K: # Klasa
def B(self):
print("Ja sam u K.B")
b = K() # Tvorba instance
uvoz u drugu programsku skriptu:
import sys
# sys.path.append () # radni folder
import primjer # Ucitava u memoriju i izvodi modul ’primjer ’
print(primjer.a) # Dohvaca izvodi neki clan (varijablu) modula ’primjer ’
primjer.A() # Dohvaca i izvodi funkciju iz modula
c = primjer.K() # Dohvaca i izvodi klasu iz modula , tvorba objekta
Moduli u Python biblioteci
Moduli se mogu ucitati (importirati) koristeci alternativna imena, i to upotrebompoveznice 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)
# formalni string reprezetant
def __repr__(self):
return "racionalni broj: %s/%s" % (self.numerator , self.denominator)
# strin treprezetant
def __str__(self):
return "%g/%g" % (self.numerator , self.denominator)
# 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 __mul__(self ,drugi):
return razlomak(self.numerator*drugi.numerator ,self.denominator*drugi.
denominator)
# operatori usporedjivanja
def __eq__(self ,drugi):
return (self.numerator*drugi.denominator == self.denominator*drugi.
numerator)
def __ne__(self ,drugi):
return not self == drugi
def __le__(self ,drugi):
return (self.numerator*drugi.denominator <= self.denominator*drugi.
numerator)
def __lt__(self ,drugi):
return (self <= drugi and self!= drugi)
def __pow__(self ,k):
return razlomak(self.numerator **k,self.denominator **k)
def __ge__(self ,drugi):
pass
def __gt__(self ,drugi):
pass
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 grafickog prikaza.Python u svojoj temeljnoj distribuciji sadrzi Tk biblioteku za rad s grafikom (Tkinterface=Tkinter).
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, ...
GUI - rad s grafickim suceljem
Prakticna primjena OOP-a je implementacija struktura podataka grafickog prikaza.Python u svojoj temeljnoj distribuciji sadrzi Tk biblioteku za rad s grafikom (Tkinterface=Tkinter).
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, ...
GUI - rad s grafickim suceljem
Prakticna primjena OOP-a je implementacija struktura podataka grafickog prikaza.Python u svojoj temeljnoj distribuciji sadrzi Tk biblioteku za rad s grafikom (Tkinterface=Tkinter).
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, ...
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
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
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
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.
Primjer
Napravite graficki prozor u kojem ce biti prikazan uzorak za igru ’kruzic-krizic’.
# 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)
Primjer
Napravite graficki prozor u kojem ce biti prikazan uzorak za igru ’kruzic-krizic’.
# 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)
Primjer
Napravite 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.
# 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 ()
Primjer
Napravite 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.
# 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 ()
Primjer
Napravite graficki program koji ce unositi temperaturu u Celziusovim stupnjevima, avracati vrijednost u Fahrenheit skali.
#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.1f" % fahrenheit)
button.setText("Quit")
# cekaj za klik i izlaz
win.getMouse ()
win.close()
main()
Primjer
Napravite graficki program koji ce unositi temperaturu u Celziusovim stupnjevima, avracati vrijednost u Fahrenheit skali.
#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.1f" % fahrenheit)
button.setText("Quit")
# cekaj za klik i izlaz
win.getMouse ()
win.close()
main()
Zadaci
Zadatak
Napisite graficki programu u Pythonu koristeci graphics.py biblioteku kako biimplementirali program crtanja grafa neke funkcije. Program uzima nekolikoparametara iz ulaza: Python regularni izraz koji zadaje realnu funkciju jedne realnevarijable te granice domene l < r . Kad korisnik unese vrijednosti parametara programcrta graf funkcije f (x) na domeni [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.
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.
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.
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.
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.