You are on page 1of 71

Testiranje softvera

Uvod u Python
Uvod u Python

• Liste , u Python-u pradstavljaju najfleksibilniji tip kolekcije. Za razliku


od stringova, liste mogu da sadrže bilo koji tip objekata: brojeve,
stringove, pa čak i druge liste
• Takođe, za razliku od stringova, liste se mogu menjati odbacivanjem
dela iste (slice), pozivanjem metoda nad listom, brisanjem itd. –
predstavljaju promenljive objekte (mutable)
• Python liste obavljaju posao mnogih kolekcionih struktura podataka
koje se moraju implementirati ruč o u nekim drugim programskim
jezicima kao što je C
Uvod u Python
• Glavne osobine Python lista su:
• Uređe e kolekcije proizvoljnih objekata
• Iz funkcionalnog pogleda, liste su samo mesta za skladište je drugih
objekata kako bi mogli da ih tretiramo kao jednu grupu. Liste takođe
održa aju pozicioniranje stavki koje sadrže sa leva na desno (tj., one
su sekvence)
• Pristup asu ič o
• Kao što je slučaj sa stringovima, oguće je iz lačiti elemente iz liste
po oću indeksa. Pošto su stavke u listama uređe e po svojim
pozicijama, oguće je spajanje (konkatenacija) ili otkidanje dela liste
(slice)
Uvod u Python

• Promenljiva duži a, heterogenost


• Za razliku od stringova, liste mogu da se proširuju i skupljaju (njihove
duži e mogu varirati) i one mogu sadržati bilo koji objekt, a ne samo
jedno karakterne stringove (heterogene su)
• Pošto liste mogu sadržati i druge slože e objekte, podrža aju i nesting
g ežde je, mogu se kreirati liste lista..)
Uvod u Python
• Mutabilne (promenljive) sekvence
• U pogledu kvalifikacije za kategoriju tipova, liste su promenljive i ože
odgovoriti na sve operacije sekvence korišćene sa stringovima, kao što
su indeksiranje, rezanje (slicing) i povezivanje. U stvari, operacije
sekvence rade na listama isto kao i na stringovima, jedina razlika je u
tome što operacije sekvence raćaju nove liste (umesto novih
stringova) kada se primenjuju na liste
• Međuti , pošto su liste mutabilne, one takođe podrža aju neke
druge operacije koje stringovi ne podrža aju, kao što su operacije
brisanja i dodavanja indeksa, koje menjaju liste
Uvod u Python
• Nizovi referenci objekata
• Teh ički, Python liste sadrže nula ili iše referenci ka drugim
objektima. Liste mogu da podsete na nizove pokazi ača (adresa).
Pribavljanje stavke iz Python liste je skoro isto brzo kao što je i
indeksiranje nizova u C-u. Zapravo, liste su zaista nizovi unutar
standardnog Python interpreter-a, a ne povezane strukture. Ipak,
Python uvek prati referencu na objekat kad god se referenca koristi,
tako da se program bavi samo objektima
• Kad god dodelite objekat nekoj komponenti strukture podataka
ili promenljivoj, Python uvek ču a referencu na isti objekat, ne
kopiju (osim ako se eksplicitno zatraži kopija)
Uvod u Python
• Lista, kao najraznovrsniji tip podataka dostupan u Python-u, ože se
napisati kao sekvenca vrednosti odvojenih zarezom, a unutar uglastih
zagrada
• Primer kreiranja liste

• Slič o indeksima nizova, indeksi liste poči ju sa 0, a liste se mogu


rezati, povezivat..
Uvod u Python
• Da bi se pristupilo vrednostima u listama, koriste se uglaste zagrade
zajedno sa indeksom ili indeksima kako bi se dobila vrednost
dostupna u tom indeksu
Pristupamo elementu na
indeksu 0
Pristupamo elementima
liste od indeksa 1 do 5
z ači zaključ o sa
indeksom 4)

• Kada se iz rši navedeni kod, on daje sledeći rezultat


Uvod u Python
• Ažurira je liste
• Moguće je ažurirati pojedi ač e elemente ili iše njih

Sada elementu na
indeksu 2 dodeljujemo
novu vrednost

Izlaz:
Uvod u Python
• Brisanje elementa iz liste

Korišće je komande
del za brisanje
elementa iz liste
Uvod u Python
• Osnovni operatori
• Liste reaguju na operacije + i * mnogo poput stringova. To z ači i
konkatenaciju i ponavljanje, osim što je rezultat nova lista, a ne string

Python izraz Rezultat Opis


len([1, 2, 3]) 3 Duži a
[1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] Konkatenacija
['Ciao'] * 4 ['Ciao', 'Ciao', 'Ciao', 'Ciao'] Ponavljanje
3 in [1, 2, 3] True Čla st o
for x in [1, 2, 3]: print(x) 123 Iteracija
Uvod u Python
• Indeksiranje, izdvajanje delova i matrice
• Isto kao što aži kod stringova

Python izraz Rezultat Opis


L[2] Drugi Indeksiranje poči je od 0
L[-2] Prvi Negativan – broji sa desna
L[1:] ['Prvi', 'Drugi'] Sekcije liste
Uvod u Python
• Neke ugrađe e metode za rad sa listama
• append() – dodaje prosleđe i objekat na postojeću listu, nema
povratnu vrednost
Uvod u Python
• count() – raća broj koji ukazuje na to koliko puta se prosleđe i
objekat ponavlja u listi
Uvod u Python
• extend() – dodaje sadržaj neke sekvence na datu listu
Uvod u Python
• insert() – ubacuje objekat u listu na datom indeksu

Na indeksu 3 ubaci
dati element
Uvod u Python
• pop() – riše poslednji element iz liste ili neki drugi element sa
zadatim indeksom
• Povratna vrednost funkcije je objekat koji se riše
Briše se poslednji
element u listi
Briše se element na
zadatoj vrednosti
indeksa
Uvod u Python
• remove() – riše element sa zadatom red ošću

Briše se element
sa red ošću z
Uvod u Python
• reverse() – o rće redosled objekata u listi
Uvod u Python
• sort() – sortira elemente liste
Uvod u Python
• Funkcije nad listom: len(), min(), max(), list()
• min() i max() – pronalazi najmanji aj eći element liste
Uvod u Python

• Primer:
• Napisati program koji sumira sve elemente liste
Uvod u Python
Uvod u Python

• Primer:
• Napisati program koji iz postojeće liste kreira novu, tako da se u toj
novoj nalaze samo parni brojevi
Uvod u Python
Uvod u Python

• Primer:
• Za dve date liste pro aći da li imaju bar jedan zajed ički element
Uvod u Python
Uvod u Python
• Rečnici (Dictionaries)
• Uporedo sa listama, reč i i su jedan od najfleksibilnijih ugrađe ih
tipova podataka u Python-u
• Kada se pomisli na liste, na njih se gleda kao uređe e kolekcije
objekata, dok kada se govori o reč iku, na njega gledamo kao na
euređe u kolekciju. Glavna razlika je u tome što se u reč i i a,
stavke koje se ču aju, se preuzimaju putem ključa
• Dok liste imaju slič u ulogu kao nizovi u drugim jezicima, reč i i
predstavljaju zapise (rekorde), tabele za pretragu ili bilo koje druge
vrste agregacije gde su imena stavki z ačaj ija od same pozicije stavke
Uvod u Python

• Glavne osobine reč ika u Python-u su:


• Pristupanje preko ključa a ne preko relativne pozicije
• Reč i i se ponekad nazivaju asocijativnim nizovima ili hešovima
(posebno od strane korisnika drugih skriptnih jezika). Oni povezuju
skup vrednosti sa ključe i a, tako da je oguće izvaditi stavku iz
reč ika koristeći ključ pod kojim je prvobitno ona i saču a a
• Koristiti se ista operacija indeksiranja da bi se dobila komponenta iz
reč ika, ali indeks ima oblik ključa, a ne relativne pozicije
Uvod u Python

• Neuređe e kolekcije proizvoljnih objekata


• Za razliku od liste, stavke saču a e u reč iku se ne ču aju u nekom
određe o redosledu
• Zapravo Python randomizuje njihovo ređa je sa leva na desno kako bi
se pružio rži pregled
• Ključe i predstavljaju si oličke (ne fizičke lokacije stavki u reč iku
Uvod u Python

• Promenljiva duži a, heterogenost


• Kao i liste, reč i i mogu rasti i smanjivati se (bez novih kopija), mogu
sadržati objekte bilo koje vrste i podrža aju g eždenje na bilo koju
dubinu (mogu sadržati liste, druge reč ike i tako dalje)
• Svaki ključ ože imati samo jednu pridruže u vrednost, ali ta
vrednost ože biti kolekcija iše objekata ako je potrebno, a
određe a vrednost ože biti saču a a pod bilo kojim brojem ključeva
Uvod u Python

• Mutabilno (promenljivo) mapiranje


• Ne podrža aju operacije sekvence koje rade na nizovima i listama.
Pošto su reč i i euređe e kolekcije, operacije koje zavise od fiksnog
položaja (npr. konkatenacija, izdvajanje) nemaju smisla
• Umesto toga, reč i i su jedini ugrađe i tipovi predstavnika kategorije
mapiranja - objekti koji mapiraju ključe e vrednostima
• Druge mape u Python-u kreiraju se uvezenim modulima
Uvod u Python
• Tabele referenci objekata heš tabele)
• Ako su liste nizovi referenci objekata koji podrža aju pristup na
osnovu pozicije, reč i i su euređe e tabele referenci objekata koji
podrža aju pristup na osnovu ključa
• Interno, reč i i se implementiraju kao heš tabele (strukture podataka
koje podrža aju vrlo brzo pro alaže je), koje poči ju kao male i rastu
na zahtev
• Pored toga, Python koristi optimizovane algoritme hešira ja za
pro alaže je ključe a, tako da je pro alaže je veoma brzo. Kao i liste,
reč i i ču aju reference objekata (ne kopije, osim ako se eksplicitno
ne traže)
Uvod u Python

• Svaki ključ je odvojen od vrednosti d otačko (:), stavke(elementi) su


razdvojene zarezom (,), a sve to se nalazi u okviru itičastih zagrada {}
• Przan reč ik je samo {}
• Ključe i su jedinstveni unutar reč ika, dok vrednosti ne moraju biti.
Vrednosti unutar reč ika mogu biti bilo kog tipa, dok ključe i moraju
biti nekog nepromenljivog (immutable) tipa podataka kao što su
stringovi, brojevi ili torke (tuples)
Uvod u Python
• Pristup elementima reč ika – operacija indeksiranja

Umesto indeksa, sada koristimo ključ,


ovim dobijamo vrednosti preko imena
(imenovane vrednosti)
Uvod u Python
• Ukoliko bi pokušali da pristupimo podacima preko ključa koji se ne
nalazi u reč iku, javila bi se greška
Uvod u Python
• Ažurira je reč ika
• Moguće je ažurira je reč ika dodavanjem novog key-value para,
modifikovanjem postojećeg, ili brisanjem

Ažurira je postojećeg
Dodavanje novog
Uvod u Python
• Brisanje elementa iz reč ika
• Moguće je ukloniti pojedi ač i element ili obrisati čita sadržaj
reč ika. Takođe oguće je obrisati čita reč ik u jednoj operaciji

Brisanje pojedi ač og elementa


Brisanje sadržaja
Brisanje celog reč ika
Uvod u Python
• Svojstva ključe a
• Vrednosti reč ika nemaju ogra iče ja. Mogu biti bilo koji proizvoljni
Python standardni objekat ili koris ički definisani objekat. Međuti ,
ovo ne aži za ključe e
• Dve až e osobine o ključe i a reč ika:
• Više od jednog unosa po ključu nije dozvoljeno. To z ači da nije dopušte o
dupliranje ključa. Kada se prilikom zadatka susreću duplirani ključe i, zadnja
kombinacija dobija
Uvod u Python
• Ključe i moraju biti nepromenljivog tipa podataka. To z ači da je oguće
koristiti stringove, brojeve ili slova kao ključe e reč ika, ali ešto što je ['kljuc']
nije dozvoljeno
Uvod u Python
• Neke ugrađe e metode za rad sa reč i i a
• clear() – riše sve stavke iz reč ika
Uvod u Python
• copy() – raća plitku kopiju reč ika
Uvod u Python
• get() – raća vrednost za prosleđe i ključ. Ukoliko dati ključ ne postoji
povratna vrednost je None

• __contains__() – raća true ukoliko dati ključ postoji


Uvod u Python
• items() – raća listu key-value parova reč ika

• keys() – raća listu ključe a reč ika

• values() – raća listu vrednosti reč ika


Uvod u Python
• Ugrađe e funkcije za rad sa reč i i a:
• len() – raća ukupnu duži u reč ika. Ovo je ekvivalentno broju stavki
(key-value parova) unutar reč ika
• str() – o ez eđuje printabilnu verziju reč ika (konveruje u string)
Uvod u Python
• Primer: Iteracija kroz reč ik korišće je for-a
Uvod u Python
• Primer: Suma svih vrednosti u reč iku
Uvod u Python
• Primer: Ispis reč ika linija po linija
Uvod u Python

• Torke (tuples)
• Torke ko struišu jednostavne grupe objekata. One rade isto kao i liste,
osim što torke ne mogu da se menjaju (nepromenljive su) i o ič o su
napisane kao niz stavki u o ič i zagradama, a ne u uglastim
• Iako ne podrža aju mnogo metoda, torke dele ećinu svojih svojstava
sa listama
• Glavne osobine torki u Python-u su:
Uvod u Python
• Uređe e kolekcije proizvoljnih objekata
• Kao što su stringovi i liste, torke su pozicijski uređe e kolekcije
objekata (redosled sa leva na desno), poput liste, mogu da sadrže bilo
koji objekat
• Pristup na osnovu pozicije
• Kao kod stringova i listi, stavkama u torkama se pristupa na osnovu
pozicije (ne po ključu)
• Podrža aju sve operacije zasnovane na poziciji, kao što su indeksiranje
i izdvajanje delova
Uvod u Python
• Nepromenljive sekvence
• Podrža aju slič e operacije kao liste i stringovi
• Međuti , kao i stringovi, pripadaju nepromenljivom (immutable) tipu
podataka, ne podrža aju operacije koje bi ih menjale
• Fiksna duži a, heterogenost
• Zbog toga što su torke nepromenljive, ne ože se promeniti eliči a
torke bez pravljenja kopija. S druge strane, torke mogu sadržati bilo
koji tip objekta, uključujući i druge slože e objekte (npr. liste, rečnike,
druge torke) či e podrža aju i g ežde je
• Nizovi referenci objekata
Uvod u Python
• Kreiranje torki – skup vrednosti razdvojen zarezom

Može i bez zagrada


Prazna torka
Mora zarez da bi interpreter
shvatio da je torka ako imamo
samo jedan element
Uvod u Python
• Za pristup vrednostima torke se koristi indeksiranje, oguće je i
izdvajanje delova (slice)
Uvod u Python
• Ažurira je torke
• Torke su nepromenljive, što z ači da se ne mogu ažurirati ili promeniti
vrednosti elementa torke. Moguće je uzeti delove postojećih torka da
bi se kreirale nove

Ne ože da se e ja
Uvod u Python
• Brisanje elemenata torke
• Uklanjanje pojedi ač ih elementa iz torke nije oguće. Naravno,
oguće je sklopiti torku, koja nastaje od želje ih elemenata iz
prethodne torke,tj. eželje i elementi su od ače i
• Da bi se eksplicitno obrisala cela torka, koristi se naredba del
Uvod u Python
• Osnovni operatori

Python izraz Rezultat Opis


Len((1,2,3)) 3 Duži a
(1, 2, 3) + (4, 5, 6) (1, 2, 3, 4, 5, 6) Konkatenacija
('Ciao ,) * 4 ('Ciao', 'Ciao', 'Ciao', 'Ciao ) Ponavljanje
3 in (1, 2, 3) True Ćla st o
for x in (1, 2, 3): print(x) 123 Iteracija
Uvod u Python
• Pošto su torke sekvence, indeksiranje i izdvajanje delova fu k io išu
na isti ači za torke kao i za stringove

Python izraz Rezultat Opis


T[2] Treci Indeksiranje poči je od 0
T[-2] Drugi Negativan – broji sa desna
T[1:] ('Drugi , Treci Sekcije torke
Uvod u Python
• Kada bi napisali skup objekata redom, razdvojenih zarezom, napisan
bez ikakvih identifikacionih simbola (kao što su uglaste zagrade za
liste, ili o ič e zagrade za torke) ovaj skup objekata bi se po default-u
posmatrao kao na torku
Uvod u Python
• Funkcije za rad sa torkama
• max() i min() – raća maksimalni (minimalni) element torke
• tuple(seq) – konvertuje seq u torku
Uvod u Python

• Time - Date
• Python program ože upravljati datumom i vremenom na iše
ači a. Pretvaranje formata za datume je uo ičaje a aktivnost za
raču are
• Python-ovi moduli za vreme i kalendar po ažu u praćenju datuma i
vremena
• Vremenski intervali su brojevi sa pokretnim zarezom u sekundama.
Određe a instanca u vremenu izraža a se u sekundama od 12:00, 1.
januara 1970. godine (epoha)
Uvod u Python
• Modul time u Python-u o ez eđuje funkcije za rad sa vremenom, i
konvertovanje iz eđu različitih reprezentacija. Funkcija time.time()
raća trenutno sistemsko vreme u otkucajima od 1. januara
1970.(epoha)
Uvod u Python
• Mnoge od Python-ovih funkcija rukuju vremenom kao torkama od 9
brojeva Indeks Polje Vrednost
0 Godina (4 cifre) 2018
1 Mesec 1 do 12
2 Dan 1 do 31
3 Sat 0 do 23
4 Minuta 0 do 59
5 Sekunda 0 do 61 (60 i 61 su sekunde
skoka)
6 Dan u sedmici 0 do 6 (0 je ponedeljak)
7 Dan u godini 1 do 366 (po Julijanskom)
-1, 0, 1, -1 z ači da
8 Let je raču a je i lioteka određuje
pomeranje vremena
Uvod u Python
Indeks Polje Vrednost
0 tm_year 2018
1 tm_mon 1 do 12
2 tm_day 1 do 31
3 tm_hour 0 do 23
4 tm_min 0 do 59
5 tm_sec 0 do 61 (60 i 61 su
sekunde skoka)
6 tm_wday 0 do 6 (0 je
ponedeljak)
7 tm_yday 1 do 366 (po
Julijanskom)
-1, 0, 1, -1 z ači da
Torka je ekvivalentna strukturi
8 tm_isdst i lioteka određuje
struct_time čija su polja
pomeranje
prikazana u tabeli
vremena
Uvod u Python
• Dobijanje trenutnog vremena
• Da bi se preveo trenutni momenat meren u sekundama od epohe,
potrebno je proslediti datu vrednost sa pokretnim zarezom u neku
funkciju(npr., localtime), koja raća torku sa svih 9 validnih stavki
Uvod u Python
• Formatiranje vremena
• Moguće je formatirati vreme na bilo koji ači
• Najednostavniji format – funkcija asctime()
Uvod u Python
• Kalendar za mesec
• Modul calendar daje širok spektar metoda za prikaz godiš jih i
eseč ih kalendara
• Modul time
Uvod u Python
No Funkcija i opis No Funkcija i opis
1 time.altzone 7 time.mktime(tupletime)
Lokalna DST vremenska zona, pozitivna Prihvata torku i raća rezultat u
ako je zapadno od UTC sekundama meren od epohe
2 time.asctime([tupleTime]) 8 time.sleep(secs)
Prihvata torku i raća vreme u Suspenduje nit na secs sekundi
ajo ič ije formatu
3 time.clock 9 time.strftime(fmt[, tupleTime])
Vraća trenutno CPU vreme u Prihvata torku i raća string
sekundama reprezentaciju specifirana stringom fmt
4 time.ctime([secs]) 10 time.strptime(str, fmt= %a %b %d … )
Kao asctime(localtime(secs)) Parsira string i raća torku
5 time.gmtime([secs]) 11 time.time()
Prihvata instancu u sekudama i pretvara Vraća trenutno vreme, mereno u
u torku sa UTC merenjem sekundama od epohe
6 time.localtime([secs]) 12 time.tzset()
Prihvata instancu u sekudama i pretvara Resetuje pravila konverzije vremena
u torku sa UTC merenjem (zavisi i od
DST)
Uvod u Python
• Zadatak 1.
• Napisati program koji pronalazi najmanji element u listi bez korišće ja
funkcije min(). Listu zadati proizvoljno

• Zadatak 2.
• Napisati program koji uklanja sve duplikate iz liste. Listu zadati
proizvoljno
Uvod u Python
• Zadatak 3. Potrebno je kreirati reč ik koji se sastoji od sledećih
ključe a i njihovih odgo arajućih vrednosti:
txt, notepad.exe,
bmp, paint.exe,
dib, paint.exe,
rtf, wordpad.exe
• Promeniti vrednost sa ključe rtf na vrednost koju će korisnik da
učita sa tastature
• Ispitati da li ključ dib postoji, ako ne postoji ispisati odgo arajuću
poruku, a ako postoji promeniti njegovu vrednost na „ ord.e e“
• Ispisati sve elemente ovog reč ika (i ključ i vrednost)
Uvod u Python
• Zadatak 4.
• Potrebno je napisati program koji o oguća a unos studenata u niz
• Korisnik se pita na početku koliko hoće da unese studenata
• Svaki student predstavlja jedan reč ik, koji se sastoji od sledećih
ključe a: ime, indeks, prosek
• Na kraju potrebno je napisati aj eći prosek studenta

You might also like