Python Ucenje
Python Ucenje
Grananje
Grananje zapocinjemo komandom if koju prati uslov i blok koda koji se izvr�ava u
slucaju ispunjenja uslova. U praksi bi to izgledalo ovako:
if promenljiva > 10 :
print('Promenljiva je veca od 10')
Kada hocemo da obradimo i slucaj kada je promenljiva manja ili jednaka od
postavljenog uslova koristicemo komandu else. Tada bismo napisali:
if promenljiva > 10 :
print('Promenljiva je veca od 10')
else :
print('Promenljiva je manja ili jednaka 10')
Ukoliko �elimo da neki iskaz ili promenljivu proveravamo po vi�e uslova tada mo�emo
da koristimo komandu elif :
if promenljiva > 10 :
print('Promenljiva je veca od 10')
elif promenljiva > 5 :
print('Promenljiva je veca od 5 a manja ili jednaka 10')
else :
print('Promenljiva je manja od ili jednaka 5')
Zanimljivi i jednostavno je kombinovanje komande if i in kako bi odredili da li je
jedan string substring drugog stringa. Skripta bi izgledala ovako:
poruka = "Ja ucim Python"
trazeni_tekst = "Python"
if trazeni_tekst in poruka:
print('Jeste')
else :
print('Nije')
Python je u pretragama ostetljiv na mala i velika slova pa je neophodno prilikom
pretraga neophodno dodati deo koji ce pretvoriti sva slova u oba pojma u mala:
poruka = "Ja ucim Python"
trazeni_tekst = "python"
if trazeni_tekst.lower() in poruka.lower():
print('Jeste')
else :
print('Nije')
Petlje
U Pythonu su dostupne while i for petlje.
While petlja ima sledecu sintaksu:
promenljiva = 0
while promenljiva < 10 :
print(promenljiva)
promenljiva += 1
For petlja se mo�e koristiti u razlicite svrhe. Ukoliko imamo znakovnu promenljivu
uz pomoc ove petlje mo�emo prikazati pojedincne znakove unutar datog znaka:
promenljiva = 'python'
for slovo in promenljiva:
print(slovo)
Izvr�enjem ove skripte kao rezultat dobijamo:
p
y
t
h
o
n
Ako imamo neku n-torku onda pomocu petlje for mo�emo da iteriramo kroz ovu n-torku:
jezici = ('php', 'python', 'c#', 'java')
for jezik in jezici:
print(jezik, len(jezik))
a nakon izvr�enja skripte imamo sledeci rezultat:
php 3
python 6
c# 2
java 4
Prilikom ispisa svakom jeziku smo pridru�ili i du�inu njihovog stringa.
N-torke
N-torke (tuples) predstavljaju nepromenljive strukture. To znaci da se jednom
definisane vrednosti unutar njih ne mogu menjati. Mogu sadr�ati elemente svih vrsta
tj. sve �to se mo�e dodeliti promenljivoj mo�e se dodati i u n-torku. Kreiraju se
vrlo lako:
jezici = ('php', 'python', 'c#', 'java')
prazna_ntorka = ()
ugnjezdena_ntorka = ((1,2), (3,4), 'simple string')
Elementi unutar ntorke su indeksirani tj. svakom od elemenata mo�ete direktno
pristupiti ukoliko znate njegov indeks. Tako bi u na�em primeru iskaz jezici[0]
ukazivao na prvi element tj. �php�, jezici[1] na �python� itd� Poslednjem elementu
mo�emo pristupiti na dva nacina � jezici[3] gde broj 3 predstavlja du�inu ntorke
umanjenu za jedan, i jezici[-1] jer je to element susedan prvom ali sa druge
strane. Po toj logici pretposlednji element bi imao indeks -2 itd� Ovakvo
indeksiranje va�i i za sve ostale strukture. Elementima struktura koje se nalaze
unutar neke strukture takode mo�emo pristupiti preko indeksa � ugnjezdena_ntorka[0]
[0] ukazuje na element 1, ugnjezdena_ntorka[1][1] na element 4 itd� Prvi indeks se
odnosi na ntorku ugnjezdena_ntorka dok se drugi indeks odnosi na strukuru koja se
nalazi unutar nje na tom indeksu. Preko indeksa mo�emo baratati i sa odredenim
opsegom unutar ntorke:
jezici = ('php', 'python', 'c#', 'java')
print(0:2)
print(:3)
print(:)
gde kao rezultat dobijamo:
('php', 'python')
('php', 'python', 'c#')
('php', 'python', 'c#', 'java')
Naveo sam da su ntorke nepromenljive. To znaci da ne mo�emo izmeniti, dodati ili
brisati elemente u ntorci nakon �to je definisana. Ako bismo poku�ali da izvr�imo
iskaz jezici[3] = �javascript� program bi izbacivao gre�ku. Korisne funkcije koje
se izvr�avaju nad ntorkama su min(ntorka) i max(ntorka) koje vracaju minimalnu
odnosno maksimalnu vrednost u ntorci sa ogranicenjem da se ne mogu primenjivati nad
ntorkama koje imaju ugnje�dene elemente. Funkcija len(ntorka) vraca ukupan broj
elemenata. Da bismo proverili da li se neki element nalazi unutar ntorke
koristicemo komandu in tj u na�em primeru sa jezicima:
if 'php' in jezici:
print('Jeste')
else:
print('Nije')
Nad n-torkama mo�emo izvr�iti operacije spajanja i repeticije:
prva_ntorka = (1, 2, 3)
druga_ntorka = (4, 5, 6)
print (prva_ntorka+druga_ntorka)
print (prva_ntorka*2)
gde kao rezultat izvr�enja dobijamo:
(1, 2, 3, 4, 5, 6)
(1, 2, 3, 1, 2, 3)
Ukoliko nam je poznato znacenje elemenata u listi mo�emo ih na sledeci nacin
dodeliti promenljivim:
spisak = (('Milan Popovic', 'PHP developer'), ('Borislav Ilic', 'Frontend
Developer'))
for pojedinac in spisak:
ime, zanimanje = pojedinac
print(ime, zanimanje)
gde kao rezultat izvr�enja dobijamo:
Milan Popovic PHP developer
Borislav Ilic Frontend Developer
Liste
Liste (Lists) predstavljaju promenljive strukture. Sve operacije koje sam naveo za
n-torke va�e i nad listama. Promenljivost elemenata je osnovna razlika izmedu n-
torki i listi. Liste se defini�u i menjaju na sledeci nacin:
jezici = ['php', 'pithon', 'c#', 'java']
print(jezici)
jezici[1] = 'python'
print(jezici)
jezici.append('javascript')
print(jezici)
jezici.remove('c#')
print(jezici)
jezici.insert(2, 'erlang')
print(jezici)
gde kao rezultat izvr�enja dobijamo:
['php', 'pithon', 'c#', 'java']
['php', 'python', 'c#', 'java']
['php', 'python', 'c#', 'java', 'javascript']
['php', 'python', 'java', 'javascript']
['php', 'python', 'erlang', 'java', 'javascript']
Prvo smo definisali listu jezici. Za razliku od n-torki koje se defini�u izmedu
obicnih zagrada () lista se defini�e izmedu uglastih []. Unutar liste smo namerno
pogre�ili drugi element � pithon. Pristupajuci direktno tom elementu preko indeksa
izmenili smo mu vrednost. Zatim smo izbacili iz liste element sa vredno�cu c#.
Zatim smo hteli da tacno na indeks 2 ubacimo element erlang te je lista dobila svoj
krajnji oblik � [�php�, �python�, �erlang�, �java�, �javascript�].
Pored navedenih korisne su i sledece metode:
jezici.reverse()
print(jezici.pop())
print(jezici.count('python'))
Najpre smo pozvali metodu reverse() pomocu koje smo obrnuli redosled elemenata u
listi pa je u tom trenutku lista izgledala ovako � [�javascript�, �java�, �erlang�,
�python�, �php�]. Metoda pop() vraca poslednji element sa liste i bri�e ga. Metoda
count(value) vraca broj pojavljivanja elementa value u listi.
Kao �to PHP ima deljenu referencu za objekte na isti nacin Python ima deljenu
referencu za liste tj ako postavimo da je kopija_liste = original_lista i pri tom
menjamo vrednosti elemenata u listi kopija_liste to ce se odraziti i na listu
original_lista. Ako bismo hteli pravu kopiju liste tada bismo morali navesti
kopija_liste = original_lista[:]
Kao �to mo�ete da primetite liste mogu sve �to i n-torke i jo� vi�e. Fleksibilne su
i u vecini slucajeva cemo im dati prednost u odnosu na n-torke. Medutim i n-torke
imaju svoju ulogu:
Br�e su � buduci da su nepromenljive sme�taju se u memoriju u takvom obliku da je
njihovo kori�cenje br�e.
Idealne su za konstante
Neki tipovi recnika zahtevaju iskljucivo njihovu upotrebu
N-torke su heterogene dok su liste homogene strukture
Recnici
Recnici (Dictionary) takode predstavljaju promenljive strukture. U recnicima podaci
se ne cuvaju u obliku skevenci nego u obliku parova. Dakle slicno pravim recnicima
� imamo rec tj kljuc i njeno znacenje tj. vrednost. Recnici u Python-u se jo� zovu
i asocijativni nizovi ili hash tabele. Defini�u se i menjaju na sledeci nacin:
recnik = {'Partizan': '100', 'Vojvodina': '69', 'Rad': '82'}
recnik['Vojvodina'] = 85
del recnik['Vojvodina']
novi_recnik = {(1,2): [1,2], (3,4): [3,4], (5,6): [5,6]}
Kao �to vidite recnici se defini�u izmedu viticastih zagrada. Znacenje kao i
brisanje kljuca se vr�i slicno kao kod nekog elementa liste. Kljuc u recniku je
nepromenljiv �o znaci da to mo�e biti broj, string ili n-torka. Kori�cenje bilo
koje druge promenljive nije dozvoljeno.
Neke od korisnih metoda nad recnicima su:
recnik = {'Partizan': '100', 'Vojvodina': '69', 'Rad': '82'}
recnik.get('OFK', 0) # Vraca podrazumevanu vrednost kljuca ako ne postoji
recnik.items() # Vraca listu koja se sastoji od ntorki koje predstavljaju
kljuc/vrednost
recnik.keys() # Vraca listu koja se sastoji od kljuceva recnika
recnik.values() # Vraca listu koja se sastoji od vrednosti kljuceva recnika
Malo poredenja
N-torke, liste i recnici su tri Python-ove strukture koje rade sa nizovima
podataka. U PHP-u su one spojene u jednu strukturu � nizove (arrays). Lak�i pristup
koji ima PHP svakako utice na performanse u radu sa nizovima. Jo� jedna stvar mi je
izazvala pa�nju � pocinjem da shvatam odbojnost programera prema needle � haystack
principu koji ima PHP kada odreduje da li neki element pripada nizu � mnogo je
citljivija i jednostavnija ista stvar u Python-u preko komande in. Kod odredjivanja
da li je neki string substring drugog stringa Python opet koristi istu komandu � in
� dok PHP ima posebnu funkciju za to. Python je svakako dosledan i praktican u
komandama a da li se u njemu stvarno programira brzinom razmi�ljanja � to cu tek
videti. Za sada su svi utisci krajnje pozitivni.