<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 1. Osnove programiranja
1.1. Python
Python (https
Step1:  Ime varijable je s, a vrijednost varijable je Hello world. Navedeno ime varijable s navedenom vrijednosti te varijable je instanca klase.
s je referenca na objekt tipa string tj. niz znakova.
upper() i replace() su metode koje se mogu koristiti nad objektima tipa string, pa tako onda i nad varijablom s.
Svojstvo objekta je njegov sadržaj, odnosno vrijednost varijable.
replace() je ime metode koja prima dva argumenta (prvi je podniz koji planiramo zamijeniti, a drugi podniz kojim ćemo zamijeniti prvi argument).
Klasa stringa definira da niz znakova mora imati alfanumeričke znakove s bjelinama, crticama i ostalim znakovima, ali ne može sadržavati npr. sliku. Također definira sve metode koje se mogu upotrijebiti nad tom klasom, dok su navedene metode samo dvije od svih mogućih metoda.
1.5. Jednostavni tipovi podataka
Python poznaje sljedeće jednostavne tipove podataka
Step2:  Cijeli brojevi mogu se prikazati od -9 223 372 036 854 775 808 do 9 223 372 036 854 775 807. U slučaju da postoji potreba za brojevima izvan navedenog raspona, mogu se pohraniti u cijele brojeve u dugom zapisu s oznakom L. U tom slučaju je ograničenje broja jedino količina radne memorije računala.
1.5.2. Realni tip podataka
Realne vrijednosti su pozitivni ili negativni realni brojevi s pomičnom (kliznom) točkom (floating-point number) (Floating point) koji odvaja cjelobrojnu vrijednost broja i razlomački dio. Brojevi s pomičnom točkom mogu se prikazati na dva načina
Step3:  Realni brojevi mogu se prikazati od 2,2250738585072014e-308 do 1,7976931348623157e+308. Kad je rezultat operacije nad brojevima prevelik za prikaz u Pythonu, prikaže se vrijednost inf. Slično tome, kad je negativan broj manji od najmanjeg broja koji se može prikazati u Pythonu, prikaže se vrijednost 0.0.
1.5.3. Niz znakova
Niz znakova (string) (String (computer science)) pripadaju nepromjenjivim tipovima podataka koje možemo definirati kao jedan ili više znakova omeđenih jednostrukim (') ili dvostrukim navodnicima (").Ako je niz znakova započet s jednostrukim navodnicima, tada mora i završavati jednostrukim navodnicima. Isto vrijedi i za dvostruke navodnike. Moguće je kombinirati jednostruke i dvostruke navodnike. Ako je niz znakova započet s jednostrukim navodnicima, može sadržavati jedan ili više dvostruki navodnik. Također vrijedi da niz znakova započet dvostrukim navodnicima može sadržavati jedan ili više jednostruki navodnik.
Step4:  Moguće je navesti prazan niz znakova navođenjem dva jednostruka ili dvostruka navodnika za redom. Vrijednost toga niza znakova je prazan niz duljine 1
Step5:  Python razlikuje znamenke pohranjene kao nizove znakova
Step6:  kao, u ovom slučaju realnu vrijednost
Step7:  1.5.3.1. Indeksiranje znakova
Unutar niza znakova je moguće dohvatiti (indeksirati ili adresirati) podniz putem uglatih zagrada i indeksa. Indeksiranje počinje nultim indeksom (zero-based numbering) (Zero-based numbering) te završava n-1 indeksom dužine niza. Indeks mora biti cjelobrojna vrijednost. Indeksirati se može jedan, u ovom primjeru prvi znak
Step8:  Ako se niz pohrani u varijablu, može se indeksirati preko naziva varijable
Step9:  Indeksirati se može i više znakova navodeći raspon indeksa tako da se navede početni indeks od kojeg se kreće, dvotočje te završni indeks do kojeg završava podniz
Step10:  Ako se navodeći raspon indeksa izostavi završni indeks u Pythonu, program će naredbu obraditi kao da je umjesto izostavljenog indeksa naveden posljednji indeks niza
Step11:  Također, ako se navodeći raspon indeksa izostavi početni indeks, program će naredbu obraditi kao da je umjesto izostavljenog indeksa naveden prvi indeks niza
Step12:  Moguće je indeksirati i posljednji znak negativnom cjelobrojnom vrijednosti indeksa
Step13:  Kod indeksiranja je moguće kombinirati pozitivne i negativne vrijednosti indeksa, dok god se početni indeks nalazi na indeksnom mjestu prije završnog indeksa. U suprotnom program vraća prazan niz.
Step14:  1.5.3.2. Posebni znakovi
Ako postoji potreba za unosom novog retka, potrebno je rabiti znak \n. Razlika između unosa i ispisa bit će vidljiva prilikom korištenja print naredbe
Step15:  Osim posebnog znaka za prelazak u novi red, u Pythonu postoji još nekoliko korisnih nizova znakova posebnog značenja, koji se prikazuju pomoću obrnute kose crte (\)
Step16:  Zadatke možete naći ovdje
Step17:  Realna vrijednost -16.85 pohranjuje se u varijablu nazvanu broj2 na sljedeći način
Step18:  Na sljedeći način se niz znakova Ovo je niz pohranjuje u varijablu nazvanu niz1
Step19:  Varijabla se može deklarirati i navođenjem praznine, čime je definiran tip podatka varijable, a trenutni sadržaj vrijednosti je prazan. Niz znakova se deklarira navođenjem dva jednostruka ili dvostruka navodnika za redom. Tako inicijaliziramo varijablu čija vrijednost je prazna, a tip podataka je niz znakova
Step20:  ili
Step21:  Dva tipa podataka koja su kasnije obrađena, su lista i rječnik, koji se također mogu deklarirati odnosno inicijalizirati bez sadržavanja vrijednosti.
Step22:  Ako ne znamo koju vrijednost i tip podataka će varijabla sadržavati, deklarirat ćemo je konstantom None
Step23:  1.7. Operatori
Python podržava sljedeće tipove operatora
Step24:  1.7.1.2. Operator oduzimanja
Operator oduzimanja (-) oduzima desni operand od lijevog.
Step25:  1.7.1.3. Operator množenja
Operator množenja (*) množi vrijednosti s desne i lijeve strane operatora.
Step26:  1.7.1.4. Operator dijeljenja
Operator dijeljenja (/) vrši cjelobrojno dijeljenje tako da dijeli lijevi operand od desnog operanda.
Step27:  Realno dijeljenje se vrši na dva načina. Jedan način je da jedan operand ima cjelobrojnu vrijednost.
Step28:  Drugi način je korištenje funkcije float() koja pretvara cijeli broj u realni.
Step29:  1.7.1.5. Operator ostatka cjelobrojnog dijeljenja
Operator ostatka cjelobrojnog dijeljenja (%) dijeli lijevi operand s desnim te vraća ostatak dijeljenja.
Step30:  1.7.1.6. Eksponent
Eksponent (**) vrši eksponencijalnu funkciju, gdje je lijevi operand baza, a desni eksponent.
Step31:  1.7.2. Operatori uspoređivanja
Operatori uspoređivanja uspoređuju vrijednosti na obje strane te odlučuju o njihovoj relaciji. Operatori uspoređivanja su
Step32:  1.7.2.2. Operator !=
Operator != provjerava jesu li vrijednosti operanda različite te vraća logički tip podataka, odnosno True kada su vrijednosti različite, a False kada su jednake.
Step33:  1.7.2.3. Operator &gt;
Operator &gt; provjerava je li vrijednost lijevog operanda veća od vrijednosti desnog operanda te vraća logički tip podataka, odnosno True kada je vrijednost lijevog operanda veća od vrijednosti desnog operanda, a False kada vrijednost lijevog operanda nije veća od vrijednosti desnog operanda.
Step34:  1.7.2.4 Operator &lt;
Operator &lt; provjerava je li vrijednost lijevog operanda manja od vrijednosti desnog operanda te vraća logički tip podataka, odnosno True kada je vrijednost lijevog operanda manja od vrijednosti desnog operanda, a False kada vrijednost lijevog operanda nije manja od vrijednosti desnog operanda.
Step35:  1.7.2.5. Operator &gt;=
Operator &gt;= provjerava je li vrijednost lijevog operanda veća ili jednaka vrijednosti desnog operanda te vraća logički tip podataka, odnosno True kada je uvjet istinit, a False kada nije.
Step36:  1.7.2.6. Operator &lt;=
Operator &lt;=provjerava je li vrijednost lijevog operanda manja ili jednaka vrijednosti desnog operanda te vraća logički tip podataka, odnosno True kada je uvjet istinit, a False kada nije.
Step37:  1.7.3. Operatori pridruživanja
Operatori pridruživanja dodjeljuju vrijednosti operandima ili vrše operacije nad operandima
Step38:  1.7.3.2. Operator +=
Operator += zbraja lijevom operandu vrijednost desnog operanda te rezultat dodjeljuje lijevom operandu.
Step39:  1.7.3.3. Operator -=
Operator -= oduzima lijevom operandu vrijednost desnog operanda te rezultat dodjeljuje lijevom operandu.
Step40:  1.7.3.4. Operator *=
Operator *= množi desni operand s lijevim operandom te rezultat dodjeljuje lijevom operandu.
Step41:  1.7.3.5. Operator /=
Operator /= dijeli vrijednost desnog operanda s vrijednosti lijevog operanda te rezultat dodjeljuje lijevom operandu.
Step42:  1.7.3.6. Operator %=
Operator %= vraća ostatak dijeljenja vrijednosti desnog operanda s vrijednosti lijevog operanda te rezultat dodjeljuje lijevom operandu.
Step43:  1.7.3.7. Operator **=
Operator **= vrši eksponencijalnu funkciju, gdje je lijevi operand baza, a desni eksponent.
Step44:  1.7.4. Operatori članstva
Operatori članstva ispituju nalazi se izraz u određenoj sekvenci, kao što su nizovi znakova ili liste. Operatori članstva su
Step45:  1.7.4.2. Operator not in
Operator not in ispituje nalazi se vrijednost varijable u određenoj sekvenci te vraća logički tip podataka, odnosno True ako se vrijednost varijable ne nalazi u određenoj sekvenci, a False ako se nalazi.
Step46:  1.7.5. Složeni izrazi
U Pythonu je moguće postavljati složene izraze, odnosno izraze u kojima postoji više od jednog operatora.
Step47:  U tom slučaju je potrebno poznavati kojim redoslijedom će se prvo izvoditi koji operator, odnosno prioritete operatora. Slijedi lista prioriteta obrađenih operatora od najvišeg do najnižeg
Step48:  1.8.2. Funkcija float()
Funkcija float() pretvara cjelobrojnu vrijednost u realni tip podatka.
Step49:  Prvo je potrebno djeljenik ili djelitelj prebaciti iz cjelobrojne vrijednosti u realni tip podatka, a zatim izvršiti dijeljenje, ako želimo dobiti razlomački dio. Iz posljednjeg primjera vidljivo je da se količnik pretvara u realni tip podatka nakon cjelobrojnog dijeljenja, a on će u tom slučaju uvijek iznositi 0.
1.8.3. Funkcija str()
Funkcija str() pretvara brojčanu vrijednost u niz znakova.
Step50:  1.8.4. Funkcija type()
Funkcija type()ne pretvara tipove podataka, već vraća koji je tip podatka određena vrijednost.
Step51:  1.9. Rad s nizovima znakova
1.9.1. Konkatenacija
U programiranju konkatenacija niza znakova je operacija spajanja znakova iz niza znakova navedenim redoslijedom (Concatenation). U Pythonu se konkatenacija vrši operatorom =.
Step52:  Konkatenacija vrši samo spajanje nizova znakova. U slučaju da želimo iz prethodnog primjera dodati razmak, veznik i razmak, potrebno je to izričito navesti.
Step53:  ili
Step54:  Kada se želi izvršiti ispis nizova znakova i brojčanih vrijednosti, prethodno je potrebno prebaciti brojčane vrijednosti u niz znakova funkcijom str.
Step55:  1.9.2. Odabrane metode nad nizovima znakova
Već su ukratko ranije spomenute dvije metode nad nizovima znakova upper() i replace(). U ovom poglavlju opisane su još neke odabrane metode nad ovim tipom podatka
Step56:  1.9.2.2. Metoda lower()
Metoda lower() vraća niz znakova u kojem su sva slova pretvorena u mala slova, ali ne mijenja ulazni niz znakova.
Step57:  1.9.2.3. Metoda replace()
Metoda replace() vraća niz znakova u kojem se stari podniz mijenja novim podnizom, ali se ne mijenja niz znakova nad kojim se vrši metoda. Sintaksa ove metode je niz.replace(old, new[, count]). Općenito se u Pythonu u oblim zagradama navode argumenti koji su obavezni, dok se u uglatim zagradama nalaze argumenti koji su opcionalni. Iz zapisa metode replace() vidljivo je da prima dva obavezna argumenta i jedan opcionalni. Argument old obavezan je argument koji sadrži stari podniz koji planiramo zamijeniti novim. Argument new obavezan je argument koji sadrži novi podniz kojim ćemo zamijeniti stari. Argument count opcionalni je argument koji sadrži cjelobrojnu vrijednost koliko puta se treba izvršiti zamjena. Ako argument nije naveden, vrši se zamjena svih nađenih pojavljivanja podniza.
Step58:  1.9.2.4. Metoda count()
Metoda count() vraća broj pojavljivanja nekog podniza. Sintaksa ove metode je niz.count(sub[, start[, end]]). Metoda prima jedan obavezni argument i dva opcionalna argumenta. Argument sub obavezni je argument koji sadrži podniz čiji broj pojavljivanja želimo izračunati. Argument start opcionalni je argument koji sadrži cjelobrojnu vrijednost početnog indeksa od kojeg kreće brojanje pojavljivanja podniza. Ako argument nije naveden, metoda kreće brojati od indeksa 0. Argument end opcionalni je argument koji sadrži cjelobrojnu vrijednost završnog indeksa do kojeg se vrši brojanje podniza. Argument je ovisan o argumentu start. Ako nije naveden argument start, ne može biti naveden niti argument end. Ako je pak naveden argument start, argument end može, ali i ne mora biti naveden. Ako argument end nije naveden, metoda završava s posljednjim indeksom niza.
Step59:  1.9.2.5. Metoda find()
Metoda find() vraća broj početni broj indeksa od kojeg kreće podniz koji tražimo. Sintaksa ove metode je niz.find(sub[, start[, end]]). Metoda prima jedan obavezni i dva opcionalna argumenta. Argument sub obavezni je argument koji sadrži podniz čiji početni indeks tražimo. Argument start opcionalni je argument koji sadrži vrijednost početnog indeksa od kojeg metoda kreće tražiti indeks podniza. Ako argument nije naveden, metoda kreće od indeksa 0. Argument end opcionalni je argument koji sadrži vrijednost završnog indeksa do kojeg metoda traži indeks podniza. Argument je ovisan o argumentu start. Ako nije naveden argument start, ne može biti naveden niti argument end. Ako je pak naveden argument start, argument end može, ali i ne mora biti naveden. Ako argument end nije naveden, metoda završava s posljednjim indeksom niza. U slučaju ako podniz ne postoji, tada vraća vrijednost -1.
Step60:  1.9.2.6. Metoda strip()
Metoda strip() vraća string u kojem je podniz uklonjen s početka i kraja niza. Sintaksa ove metode je niz.strip([chars]). Metoda prima jedan opcionalni argument. Argument chars opcionalni je argument koji sadrži podniz koji želimo ukloniti s početka i kraja niza. Ako argument nije naveden, pretpostavljena vrijednost su znakovi za bjeline.
Step61:  1.9.2.7. Metoda split()
Metoda split() vraća tip podatka listu svih riječi iz niza znakova upotrebljavajući neki separator. Sintaksa ove metode je niz.split([sep[, maxsplit]]). Metoda prima dva opcionalna argumenta. Argument sep opcionalni je argument koji sadrži podniz koji želimo upotrijebiti kao separator. Ako argument nije naveden, pretpostavljena vrijednost je razmak. Argument maxsplit opcionalni je argument koji sadrži cjelobrojnu vrijednost koliko puta želimo izvršiti razdvajanje. Argument je ovisan o argumentu sep. Ako nije naveden argument sep, ne može biti naveden niti argument maxsplit. Ako je pak naveden argument sep, argument maxsplit može, ali i ne mora biti naveden. Ako maxsplit nije naveden, metoda vrši maksimalan mogući broj razdvajanja.
Step62:  1.9.2.8. Metoda join()
Metoda join() vraća niz u kojem su elementi liste spojeni separatorom. Sintaksa ove metode je niz.joint(list). U ovoj metodi separator je ustvari niz nad kojim se vrši metoda (niz). Metoda prima jedan obavezan argument. Argument list obavezni je argument koji sadrži listu čije elemente želimo spojiti pomoću niza znakova nad kojim vršimo metodu.
Step63:  Zadatke možete naći ovdje
Step64:  Vrijednost liste dodjeljujemo varijabli operatorom pridruživanja =.
Step65:  Listu možemo inicijalizirati bez sadržavanja vrijednosti
Step66:  Liste je moguće indeksirati, kao i nizove znakova
Step67:  Dodatno je kod lista moguće indeksirati unutar elemenata liste onih tipova podataka koji podržavaju indeksiranje (npr. nizovi znakova i liste) na sljedeći način
Step68:  Nad listama je moguće vršiti konkatenaciju na sljedeći način
Step69:  Funkcija len() računa duljinu liste, odnosno vraća cjelobrojnu vrijednost broja elemenata u listi.
Step70:  Liste su promjenjivi tipovi podataka, tako da je moguće vrijednost postojećeg elementa liste promijeniti indeksiranjem tog elementa i dodjeljivanjem nove vrijednosti
Step71:  1.10.1. Odabrane metode nad listama
U ovom poglavlju opisane su metode koje se vrše nad listama
Step72:  1.10.1.2. Metoda insert()
Metodom insert() moguće je dodati element u postojeću listu na određeno mjesto u listi. Sintaksa ove metode je lista.insert(index, obj). Metoda prima dva obavezna argumenta. Argument index obavezni je argument koji sadrži cjelobrojnu vrijednost indeksa na koji želimo dodati element u postojeću listu. Argument obj obavezni je argument koji sadrži vrijednost elementa koji želimo dodati u postojeću listu. Metoda ne vraća nikakvu vrijednost, već ažurira postojeću listu.
Step73:  1.10.1.3. Metoda remove()
Metoda remove() uklanja prvo pojavljivanje elementa iz postojeće liste. Sintaksa ove metode je lista.remove(obj). Metoda prima jedan obavezni argument. Argument obj obavezni je argument koji sadrži vrijednost elementa koji želimo obrisati iz postojeće liste. Metoda ne vraća nikakvu vrijednost, već ažurira postojeću listu.
Step74:  Osim ovom metodom, elemente liste moguće je brisati putem naredbe del i indeksa elementa
Step75:  Zadatke možete naći ovdje
Step76:  Kod provjere s brojem 3, logički uvjet nije ispunjen (tj. rezultat logičkog izraza je FALSE), jer 2 nije veći od 5 te se nije ispisao zadani tekst. Kod provjere s brojem 10, logički uvjet je ispunjen (tj. rezultat logičkog izraza je TRUE) te se ispisao zadani tekst.
Na sljedeći način ispisat ćemo "Broj je paran." za sve brojeve koji su parni, a "Broj je neparan." za sve brojeve koji su neparni te provjeriti blok naredbi s brojevima 3 i 10
Step77:  U ovom primjeru provjeravamo je li ostatak dijeljenja s brojem 2 jednak 0 (if a%2==0). Ako je uvjet ispunjen (tj. rezultat logičkog izraza je TRUE), ispisat će se "Broj je paran." (print 'Broj je paran.'). Za sve ostale slučajeve (else), ispisat će se "Broj je neparan" (print 'Broj je neparan.).
Moguće je unutar if naredbe imati drugu if naredbu
Step78:  U ovom primjeru provjeravamo je li broj djeljiv s 2. Ako je taj uvjet ispunjen, provjeravamo je li broj manji od 10. Ako je i taj uvjet ispunjen, broj množimo s 3. Ako broj nije djeljiv s 2, broj množimo s 5.
Isti zadatak moguće je riješiti logičkim operatorom and na sljedeći način
Step79:  U ovom primjeru provjeravamo je li broj djeljiv s 2 i (logički operator and) je li broj manji od 10. Tek kada se oba uvjeta ispune, broj množimo s 3. Ako uvjet nije ispunjen, broj množimo s 5.
Na sljedeći način moguće je upotrijebiti logički operator or
Step80:  U ovom primjeru provjeravamo je li broj djeljiv s 2 ili (logički operator or) je li broj djeljiv s 3. Samo je jedan uvjet potrebno izvršiti kako bi broju zbrojili 4. Ako nije ispunjen ni jedan od uvjeta, oduzima se broj 8.
Na sljedeći način možemo postaviti složeni blok naredbi
Step81:  1.11.2. for petlja
Petlja kojom se vrši iteracija, odnosno uzastopno ponavljanje niza naredbi, naziva se for petlja. Sintaksa petlje je for pomocna_varijabla in obj
Step82:  Iz primjera je vidljivo da pomoćna varijabla znak poprima vrijednosti svakog znaka neki niz kroz koji iteriramo, od prvog do posljednjeg. U prvoj iteraciji poprima vrijednost n, u drugoj iteraciji poprima vrijednost e, u trećoj iteraciji poprima vrijednost k i tako sve do posljednjeg znaka niza kroz koji iteriramo. Vrši se onoliko iteracija koliko ima znakova u nizu. Naziv pomoćne varijable znak je proizvoljan.
Moguće je kombinirati if naredbu i for petlju. U sljedećem primjeru ispisat ćemo samo samoglasnike iz niza znakova kroz koji iteriramo
Step83:  U ovom primjeru iteriramo kroz neki niz. U prvoj iteraciji znak poprima vrijednost n. Zatim se provjerava nalazi li se ta vrijednost u nizu 'aeiou'. Upotrebljavamo operator članstva in koji ispituje nalazi li se vrijednost pomoćne varijable u navedenom nizu znakova te vraća logički tip podatka. Budući da se n ne nalazi, prva iteracija for petlje završava i kreće druga iteracija for petlje. U drugoj iteraciji znak poprima vrijednost e. Zatim se provjerava nalazi li se ta vrijednost u nizu 'aeiou'. Budući da je uvjet ispunjen, ispisuje se trenutna vrijednost pomoćne varijable znak, što je u ovom slučaju e. Ovdje završava druga iteracija i kreće treća iteracija for petlje, kada znak poprima vrijednost k. Zatim se provjerava nalazi li se ta vrijednost u nizu aeiou. Budući da se k ne nalazi, završava treća iteracija petlje i kreće četvrta iteracija. U četvrtoj iteraciji znak poprima vrijednost i. Zatim se provjerava nalazi li se ta vrijednost u nizu aeiou. Budući da je uvjet ispunjen, ispisuje se trenutna vrijednost pomoćne varijable znak. Ovdje završava četvrta iteracija te kreće peta iteracija for petlje. I tako sve do kraja zadnjeg znaka u nizu neki niz. Vrši se i dalje onoliko iteracija petlje koliko ima znakova u nizu, samo zbog dodatnog uvjeta ispisujemo jedino one znakove koji ispunjavaju uvjet.
Brojačem možemo izbrojati koliko se puta neki fenomen pojavljuje u nizu, ali ga prvo moramo svesti na vrijednost 0 dodjeljivanjem te vrijednosti varijabli koju nazivamo brojač. Na primjer, možemo izračunati koliko se samoglasnika pojavljuje u nekom nizu znakova.
Step84:  Varijabla niz sadrži 7, a ne 6 samoglasnika. Logički uvjet u if naredbi provjerava nalazi li se pomoćna varijabla znak u nizu aeiou. Budući da je logički uvjet ispunjen samo kada znak poprimi vrijednost samoglasnika pisanog malim slovima, ovako postavljen uvjet preskače prvi znak u varijabli niz odnosno veliko slovo O. Problem se rješava trikom tako da se niz pretvori u mala slova metodom lower() na sljedeći način
Step85:  U novi niz samoglasnici možemo pohraniti sve samoglasnike iz zadanog niza. Prvo je potrebno inicijalizirati prazan niz, a nakon toga iterirati kroz niz, provjeriti je li trenutni znak samoglasnik te ga pridružiti nizu samoglasnici ako je logički uvjet ispunjen.
Step86:  1.11.2.2. Iteracija kroz listu
Iterirati možemo kroz listu. Kada stavimo listu u for petlju, iterira se od prvog elementa liste do posljednjeg elementa liste. Na primjer, u sljedećem primjeru iterirat ćemo kroz listu te u svakoj iteraciji ispisati trenutnu vrijednost pomoćne varijable.
Step87:  U ovom primjeru iteriramo kroz listu [1, 2, 'tri', [4,'pet'], 6.0]. U prvoj iteraciji pomoćna varijabla element poprima vrijednost 1. U drugoj iteraciji element poprima vrijednost 2. U trećoj iteraciji element poprima vrijednost 'tri'. U četvrtoj iteraciji element poprima vrijednost [4, 'pet']. U petoj i posljednjoj iteraciji poprima vrijednost posljednjeg elementa liste 6.0.
Za svaki element liste možemo provjeriti kojeg je tipa podatka pomoću funkcije type()
Step88:  Iz primjera je vidljivo da su prva dva elementa liste cjelobrojne vrijednosti, treći element je niz znakova, četvrti element je lista, a peti element je realni tip podatka.
U sljedećem primjeru kombiniramo for petlju i if naredbu
Step89:  U ovom primjeru iteriramo kroz listu ['jedan', 'dva', 'tri', 'četiri', 'pet'] i provjeravamo je li dužina elementa liste veća od 3. Ako je veća, onda ispisuje element. U prvoj iteraciji pomoćna varijabla element poprima vrijednost 'jedan'. Zatim se provjerava je li dužina trenutne vrijednosti pomoćne varijable veća od 3. Budući da je jedan ima više od 3 znaka, uvjet je ispunjen i trenutna vrijednost pomoćne varijable element se ispisuje. Kreće druga iteracija u kojoj element poprima vrijednost 'dva'. Zatim se provjerava je li dužina trenutne vrijednosti pomoćne varijable veća od 3. Budući da dva nema više od tri znaka (ima upravo tri znaka, ali ne više od tri znaka), uvjet nije ispunjen te tu završava druga iteracija i kreće treća iteracija. I tako sve do posljednjeg elementa liste.
U sljedećem primjeru ispisat ćemo prvi znak elemenata iz liste indeksiranjem
Step90:  Možemo izračunati prosječnu duljinu znakova elemenata liste.
Step91:  U ovom primjeru prvo smo varijablu u koju ćemo spremati duljinu znakova sveli na vrijednost 0. Zatim smo u varijablu lista pohranili listu kroz koju ćemo iterirati. Za svaki element liste računali smo duljinu elementa (len(element)) i vrijednost dodavali u varijabli duljina_znakova. U prvoj iteraciji duljina_znakova poprimila je vrijednost 5, jer jedan ima 5 znakova. U drugoj iteraciji duljina_znakova poprimila je vrijednost 8, jer dva ima još 3 znaka, a 5+3 jednako je 8. U trećoj iteraciji duljina_znakova poprimila je vrijednost 11, jer tri ima još 3 znaka, a 5+3+3 jednako je 11. U četvrtoj iteraciji duljina_znakova poprimila je vrijednost 17, jer cetiri ima još 6 znakova, a 5+3+3+6 jednako je 17. Kada je završila iteracija, cjelobrojnu vrijednost varijable duljina_znakova pretvorili smo u realni tip podatka te podijelili s dužinom liste (tj. brojem elemenata u listi). Budući da su vrijednost varijable duljina_znakova i vrijednost izraza len(lista) cjelobrojni tipovi podataka, potrebno je jednu od vrijednosti pretvoriti u realni tip podatka, jer ćemo nećemo dobiti razlomački dio.
Kada imamo brojač kojim brojimo koliko se puta neki fenomen pojavljuje u određenoj sekvenci ili zbrajamo elemente, taj brojač moramo svesti na vrijednost 0 dodjeljivanjem tu vrijednost varijabli. U sljedećem primjeru izračunat ćemo zbroj elemenata u listi, a brojač pohraniti u varijabli i. Na kraju iteracije ispisujemo vrijednost brojača.
Step92:  Moguće je pratiti koje vrijednosti poprima brojač i u svakoj iteraciji, tako da se ispiše vrijednost i unutar for petlje
<ASSISTANT_TASK:>
Python Code:
print "Hello world"
s="Hello world"
print s
print s.upper()
print s.replace("o","O")
Explanation: 1. Osnove programiranja
1.1. Python
Python (https://www.python.org) je visokorazinski (High-level programming language), interpretirani (Interpreter (computing) i dinamički tipizirani (Dynamic programming language) programski jezik (Programming language, programski jezici) opće namjene.
Kod rada s visokorazinskim jezicima ne treba brinuti o načinu izvođenja koda na računalu zbog visokog stupnja apstrakcije od detalja rada računala. Na primjer, kod pisanja računalnog koda koji sadržava računske operacije s brojevima, ne treba brinuti jesu li brojevi 16-bitne ili 32-bitne cjelobrojne vrijednosti pohranjene na računalu. Osim što nije potrebno poznavati podatkovne strukture, kod visokorazinskih jezika moguće je vršiti složenije operacije nad složenijim podatkovnim strukturama. Takvi jezici mogu u naredbama koristiti elemente prirodnog jezika, što ih čini jednostavnijima za upotrebu od niskorazinskih jezika. Za usporedbu, instrukcije kod strojnih jezika i niskorazinskih jezika sličnih strojnim jezicima sastoje se od nula i jedinica te je potrebno poznavanje arhitekture računala.
Python je interpretirani jezik, što znači da se tijekom pokretanja programa prevodi naredba po naredba na računalu razumljiv jezik, a to vrše interpreteri. Za usporedbu, postoje drugi jezici koji prevode cijeli program na strojni kod prije njihova izvršavanja, a to vrše kompajleri ili kompilatori.
Kod dinamički tipiziranog jezika nije potrebno unaprijed definirati tipove podataka, već se prilikom dodjeljivanja vrijednosti varijabli određuje kojem tipu podataka pripada.
Python je dobio naziv prema britanskoj televizijskoj seriji "Leteći cirkus Montyja Pythona" (Why is it called Python?) iz 60-ih i 70-ih godina.
1.2. Osnovni pojmovi
Python poznaje različite tipove podataka (Data type) kao što su cjelobrojni, realni, logički, nizovi znakova i ostali. Tipovi podataka definiraju koje se operacije mogu vršiti nad određenim tipom podataka te kako se vrijednosti određenih tipova podataka pohranjuju na računalu. Na primjer, u slučaju cjelobrojnih tipova podataka, definirano je kako se navedeni tip podatka pohranjuje u računalu, koliko je računalne memorije potrebno za pohranu, koja je najmanja vrijednost koju tip podatka može poprimiti, koja je najveća vrijednost koju može poprimiti, koje aritmetičke operacije se mogu vršiti nad navedenim tipom podataka i sl. Python omogućava programerima da definiraju vlastite tipove podataka, uglavnom kombinirajući različite elemente drugih tipova podataka te definirajući dozvoljene operacije koje se smiju vršiti nad novim tipom podatka.
Varijabla (Variable (computer science)) je lokacija na memoriji računala u koju se može pohraniti neka vrijednost. Upravo zbog odvajanja naziva i sadržaja, preko naziva varijable, program dodijeljenu vrijednost može pročitati, prikazati i upotrijebiti u dozvoljenim operacijama. Na primjer, vrijednost 1234567890 pohranjujemo u varijablu s nazivom broj. Sljedeći puta kada želimo upotrijebiti navedenu vrijednost, možemo to učiniti preko naziva varijable broj.
Objektno-orijentirano programiranje (Object-oriented programming) temelji se na konceptu objekata (Object (computer science), koji su ustvari varijable. Objekt posjeduje svojstva (Attribute (computing) i metode (Method (computer programming). Svojstva su ustvari podaci s nazivom, vrijednostima i ograničenjima koji određeni tip podatka nameće, a metode su dozvoljene operacije koje se mogu vršiti nad tim podacima. Svi objekti istog tipa pripadaju istoj klasi (Class (computer programming), koja sadrži informacije o tipovima podataka i dozvoljenim operacijama za određenu klasu. Svaki objekt je instanca određene klase, a instance su ustvari podaci koji pripadaju pojedinim objektima. Računalni programi pišu se kao skup objekata koji su u međusobnoj interakciji. Računalni program može sadržavati više instanci iste klase, pa se na taj način mogu upotrebljavati iste procedure na različitim skupovima podataka.
1.3. Primjer modela fizičkog objekta
Fizički objekt bicikl pripada klasi svih bicikala. Instanca klase je konkretan bicikl. Kada imamo Nikolin, Tanjin, Majin i Petrin bicikl, imamo četiri instance jednog objekta bicikla. Klasa je nacrt svih objekata i instanci navedene klase, odnosno zajednička svojstva svih pripadnika klase, u našem slučaju svih bicikala na svijetu. Svojstva bicikla su tip, boja, veličina, veličina kotača, tip kočnica i sl. Metode koje pripadaju objektu bicikl su kreni, ubrzaj, stani, koči, prebaci u višu brzinu, prebaci u nižu brzinu i sl.
Objekt: bicikl
Klase: svojstva bicikla i operacije koje se mogu vršiti biciklom
Instanca klase: Nikolin bicikl
Svojstva: tip, boja, veličina, veličina kotača, tip kočnica
Metode: kreni, ubrzaj, stani, koči, prebaci u višu brzinu, prebaci u nižu brzinu
1.4. Primjer objekta
Niz znakova je tip podataka string. U Pythonu se koristi naredba print za ispisivanje.
End of explanation
2
-7897
Explanation: Ime varijable je s, a vrijednost varijable je Hello world. Navedeno ime varijable s navedenom vrijednosti te varijable je instanca klase.
s je referenca na objekt tipa string tj. niz znakova.
upper() i replace() su metode koje se mogu koristiti nad objektima tipa string, pa tako onda i nad varijablom s.
Svojstvo objekta je njegov sadržaj, odnosno vrijednost varijable.
replace() je ime metode koja prima dva argumenta (prvi je podniz koji planiramo zamijeniti, a drugi podniz kojim ćemo zamijeniti prvi argument).
Klasa stringa definira da niz znakova mora imati alfanumeričke znakove s bjelinama, crticama i ostalim znakovima, ali ne može sadržavati npr. sliku. Također definira sve metode koje se mogu upotrijebiti nad tom klasom, dok su navedene metode samo dvije od svih mogućih metoda.
1.5. Jednostavni tipovi podataka
Python poznaje sljedeće jednostavne tipove podataka:
* cjelobrojni tip podataka (integer, int)
* realni tip podataka (floating-point number, float)
* niz znakova (string, str)
* logička vrijednost (boolelan).
1.5.1. Cjelobrojni tip podataka
Brojevi pripadaju nepromjenjivim tipovima podataka. U Pythonu se prije razlomačkog dijela broja koristi točka, a ne zarez.
Cjelobrojni tipovi podataka (Integer (computer science) su pozitivni ili negativni cijeli brojevi bez decimalne točke. Za pohranjivanje cjelobrojnog tipa podataka potrebno je 32 bita.
End of explanation
3.4
-7213.6241
2.66e-23
Explanation: Cijeli brojevi mogu se prikazati od -9 223 372 036 854 775 808 do 9 223 372 036 854 775 807. U slučaju da postoji potreba za brojevima izvan navedenog raspona, mogu se pohraniti u cijele brojeve u dugom zapisu s oznakom L. U tom slučaju je ograničenje broja jedino količina radne memorije računala.
1.5.2. Realni tip podataka
Realne vrijednosti su pozitivni ili negativni realni brojevi s pomičnom (kliznom) točkom (floating-point number) (Floating point) koji odvaja cjelobrojnu vrijednost broja i razlomački dio. Brojevi s pomičnom točkom mogu se prikazati na dva načina: klasični način s točkom ili znanstveni način prikazivanja brojeva sa slovom E. Za pohranjivanje realnog tipa podataka potrebno je 64 bita.
End of explanation
'Ovo je niz znakova.'
"Ovo je isto niz znakova."
"Ovo je 'niz znakova' u kojem se nalazi 'kombinacija' navodnika."
Explanation: Realni brojevi mogu se prikazati od 2,2250738585072014e-308 do 1,7976931348623157e+308. Kad je rezultat operacije nad brojevima prevelik za prikaz u Pythonu, prikaže se vrijednost inf. Slično tome, kad je negativan broj manji od najmanjeg broja koji se može prikazati u Pythonu, prikaže se vrijednost 0.0.
1.5.3. Niz znakova
Niz znakova (string) (String (computer science)) pripadaju nepromjenjivim tipovima podataka koje možemo definirati kao jedan ili više znakova omeđenih jednostrukim (') ili dvostrukim navodnicima (").Ako je niz znakova započet s jednostrukim navodnicima, tada mora i završavati jednostrukim navodnicima. Isto vrijedi i za dvostruke navodnike. Moguće je kombinirati jednostruke i dvostruke navodnike. Ako je niz znakova započet s jednostrukim navodnicima, može sadržavati jedan ili više dvostruki navodnik. Također vrijedi da niz znakova započet dvostrukim navodnicima može sadržavati jedan ili više jednostruki navodnik.
End of explanation
''
""
Explanation: Moguće je navesti prazan niz znakova navođenjem dva jednostruka ili dvostruka navodnika za redom. Vrijednost toga niza znakova je prazan niz duljine 1:
End of explanation
'3.14'
Explanation: Python razlikuje znamenke pohranjene kao nizove znakova:
End of explanation
3.14
Explanation: kao, u ovom slučaju realnu vrijednost:
End of explanation
'Ovo je niz.'[0]
Explanation: 1.5.3.1. Indeksiranje znakova
Unutar niza znakova je moguće dohvatiti (indeksirati ili adresirati) podniz putem uglatih zagrada i indeksa. Indeksiranje počinje nultim indeksom (zero-based numbering) (Zero-based numbering) te završava n-1 indeksom dužine niza. Indeks mora biti cjelobrojna vrijednost. Indeksirati se može jedan, u ovom primjeru prvi znak:
End of explanation
niz='Ovo je niz.'
niz[0]
Explanation: Ako se niz pohrani u varijablu, može se indeksirati preko naziva varijable:
End of explanation
niz[4:6]
Explanation: Indeksirati se može i više znakova navodeći raspon indeksa tako da se navede početni indeks od kojeg se kreće, dvotočje te završni indeks do kojeg završava podniz:
End of explanation
niz[4:]
Explanation: Ako se navodeći raspon indeksa izostavi završni indeks u Pythonu, program će naredbu obraditi kao da je umjesto izostavljenog indeksa naveden posljednji indeks niza:
End of explanation
niz[:6]
Explanation: Također, ako se navodeći raspon indeksa izostavi početni indeks, program će naredbu obraditi kao da je umjesto izostavljenog indeksa naveden prvi indeks niza:
End of explanation
niz[-1]
Explanation: Moguće je indeksirati i posljednji znak negativnom cjelobrojnom vrijednosti indeksa:
End of explanation
niz[7:-1]
niz[7:-5]
Explanation: Kod indeksiranja je moguće kombinirati pozitivne i negativne vrijednosti indeksa, dok god se početni indeks nalazi na indeksnom mjestu prije završnog indeksa. U suprotnom program vraća prazan niz.
End of explanation
print 'Prvi red niza.\nDrugi red niza.'
Explanation: 1.5.3.2. Posebni znakovi
Ako postoji potreba za unosom novog retka, potrebno je rabiti znak \n. Razlika između unosa i ispisa bit će vidljiva prilikom korištenja print naredbe:
End of explanation
3<7
4.5>9
Explanation: Osim posebnog znaka za prelazak u novi red, u Pythonu postoji još nekoliko korisnih nizova znakova posebnog značenja, koji se prikazuju pomoću obrnute kose crte (\):
Niz | Opis | Unicode kod
--- | --- | ---
\ | obrnuta kosa crta (\) | \u005C
\' | jednostruki navodnik ('), koji se može koristiti unutar niza znakova započetog jednostrukim navodnicima | \u0027
\" | dvostruki navodnik ("), koji se može koristiti unutar niza znakova započetog dvostrukim navodnicima | \u0022
\n | ASCII Linefeed (LF) (novi red) | \u000A
\r | ASCII Carriage Return (CR) (povrat glave pisača na početak reda) | \u000D
\t | ASCII Horizontal Tab (TAB) (vodoravni tabulator) | \u0009
\v | ASCII Vertical Tab (VT) (okomiti tabulator) | \u000B
1.5.4. Logička vrijednost
Logičke vrijednosti ili Booleove vrijednosti (Boolean data type) poprimaju samo dvije moguće vrijednosti, koje se prikazuju pomoću konstanti True i False. Logičke vrijednosti obično su rezultat uspoređivanja:
End of explanation
broj1=9
print broj1
Explanation: Zadatke možete naći ovdje: Zadaci
1.6. Varijable
Varijabla je mjesto pohrane kojem je dodijeljen naziv u kojem program može pohraniti dodijeljenu vrijednost te je pročitati i prikazati. Svaki programski jezik ima različita pravila kako se varijable mogu nazivati, unositi i koristiti. Varijabla poprima određenu vrijednost naredbom dodjeljivanja. Naredba dodjeljivanja vrši se operatorom =:
&lt;naziv varijable&gt; = &lt;vrijednost&gt;
1.6.1. Imenovanje varijabli
Prilikom imenovanja varijabli treba imati na umu sljedeće:
* Naziv varijable može sadržavati slova engleske abecede, znamenke i podcrte.
* Python razlikuje velika i mala slova. Nije isto imenovati varijablu "broj", "Broj", "BROJ", "BrOj" i sl.
* Naziv varijable mora početi sa slovom ili podcrtom. Ne može početi sa znamenkom.
* Postoje tzv. rezervirane riječi koje čine sintaksu programskog jezika i koje se ne mogu koristiti kao nazivi varijabli. To su:
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
.
* None se također ne može koristiti za naziv varijable, iako nije rezervirana riječ, već konstanta.
1.6.2. Dodjeljivanje vrijednosti varijabli
Prilikom deklariranja varijable ne navodi se vrsta podataka. Vrijednost koja je navedena prilikom deklariranja varijable određuje kojem tipu podataka pripada varijabla. Vrijednost varijable je moguće mijenjati tijekom izvođenja programa. Također je deklariranjem varijable moguće mijenjati tako i tip podatka varijable.
Kako bi se varijabla mogla koristiti tijekom izvođenja programa, mora biti deklarirana. Varijabla se može deklarirati dodjeljivanjem neke vrijednosti. Na sljedeći način pohranjuje se cjelobrojna vrijednost 9 u varijablu nazvanu broj1:
End of explanation
broj2=-16.85
print broj2
Explanation: Realna vrijednost -16.85 pohranjuje se u varijablu nazvanu broj2 na sljedeći način:
End of explanation
niz1='Ovo je niz'
print niz1
Explanation: Na sljedeći način se niz znakova Ovo je niz pohranjuje u varijablu nazvanu niz1:
End of explanation
prazan_niz1=''
print prazan_niz1
Explanation: Varijabla se može deklarirati i navođenjem praznine, čime je definiran tip podatka varijable, a trenutni sadržaj vrijednosti je prazan. Niz znakova se deklarira navođenjem dva jednostruka ili dvostruka navodnika za redom. Tako inicijaliziramo varijablu čija vrijednost je prazna, a tip podataka je niz znakova:
End of explanation
prazan_niz2=""
print prazan_niz2
Explanation: ili
End of explanation
lista=[]
print lista
rjecnik={}
print rjecnik
Explanation: Dva tipa podataka koja su kasnije obrađena, su lista i rječnik, koji se također mogu deklarirati odnosno inicijalizirati bez sadržavanja vrijednosti.
End of explanation
var=None
print var
Explanation: Ako ne znamo koju vrijednost i tip podataka će varijabla sadržavati, deklarirat ćemo je konstantom None:
End of explanation
a=20
b=10
print a+b
Explanation: 1.7. Operatori
Python podržava sljedeće tipove operatora:
* aritmetički operatori
* operatori uspoređivanja
* operatori pridruživanja
* operatori članstva
1.7.1. Aritmetički operatori
Aritmetički operatori su:
* operator zbrajanja (+)
* operator oduzimanja (-)
* operator množenja (*)
* operator dijeljenja (/)
* operator ostatka cjelobrojnog dijeljenja (%)
* eksponent (**)
1.7.1.1. Operator zbrajanja
Operator zbrajanja (+) zbraja vrijednosti s desne i lijeve strane operatora.
End of explanation
a=20
b=10
print a-b+3
Explanation: 1.7.1.2. Operator oduzimanja
Operator oduzimanja (-) oduzima desni operand od lijevog.
End of explanation
a=20
b=10
print a*b
Explanation: 1.7.1.3. Operator množenja
Operator množenja (*) množi vrijednosti s desne i lijeve strane operatora.
End of explanation
a=20
b=10
print a/b
c=7
d=2
print c/d
Explanation: 1.7.1.4. Operator dijeljenja
Operator dijeljenja (/) vrši cjelobrojno dijeljenje tako da dijeli lijevi operand od desnog operanda.
End of explanation
e=7
f=2.0
print e/f
Explanation: Realno dijeljenje se vrši na dva načina. Jedan način je da jedan operand ima cjelobrojnu vrijednost.
End of explanation
c=7
d=2
print float(c)/d
print c/float(d)
Explanation: Drugi način je korištenje funkcije float() koja pretvara cijeli broj u realni.
End of explanation
c=7
d=2
print c%d
Explanation: 1.7.1.5. Operator ostatka cjelobrojnog dijeljenja
Operator ostatka cjelobrojnog dijeljenja (%) dijeli lijevi operand s desnim te vraća ostatak dijeljenja.
End of explanation
b=10
d=2
print b**2
Explanation: 1.7.1.6. Eksponent
Eksponent (**) vrši eksponencijalnu funkciju, gdje je lijevi operand baza, a desni eksponent.
End of explanation
a=20
b=10
print a==b
c=7
print c==7
Explanation: 1.7.2. Operatori uspoređivanja
Operatori uspoređivanja uspoređuju vrijednosti na obje strane te odlučuju o njihovoj relaciji. Operatori uspoređivanja su:
* operator ==
* operator !=
* operator &gt;
* operator &lt;
* operator &gt;=
* operator &lt;=
1.7.2.1. Operator ==
Operator == uspoređuje jesu li vrijednosti operanda jednake te vraća logički tip podataka, odnosno True kada su vrijednosti jednake, a False kada su različite.
End of explanation
a=20
b=10
print a!=b
c=7
print c!=7
Explanation: 1.7.2.2. Operator !=
Operator != provjerava jesu li vrijednosti operanda različite te vraća logički tip podataka, odnosno True kada su vrijednosti različite, a False kada su jednake.
End of explanation
a=20
b=10
print a>b
print b>a
Explanation: 1.7.2.3. Operator &gt;
Operator &gt; provjerava je li vrijednost lijevog operanda veća od vrijednosti desnog operanda te vraća logički tip podataka, odnosno True kada je vrijednost lijevog operanda veća od vrijednosti desnog operanda, a False kada vrijednost lijevog operanda nije veća od vrijednosti desnog operanda.
End of explanation
a=20
b=10
print a<b
print b<a
Explanation: 1.7.2.4 Operator &lt;
Operator &lt; provjerava je li vrijednost lijevog operanda manja od vrijednosti desnog operanda te vraća logički tip podataka, odnosno True kada je vrijednost lijevog operanda manja od vrijednosti desnog operanda, a False kada vrijednost lijevog operanda nije manja od vrijednosti desnog operanda.
End of explanation
a=20
b=10
print a>=b
print b>=a
c=7
print c>=7
Explanation: 1.7.2.5. Operator &gt;=
Operator &gt;= provjerava je li vrijednost lijevog operanda veća ili jednaka vrijednosti desnog operanda te vraća logički tip podataka, odnosno True kada je uvjet istinit, a False kada nije.
End of explanation
a=20
b=10
print a<=b
print b<=a
c=7
print c<=7
Explanation: 1.7.2.6. Operator &lt;=
Operator &lt;=provjerava je li vrijednost lijevog operanda manja ili jednaka vrijednosti desnog operanda te vraća logički tip podataka, odnosno True kada je uvjet istinit, a False kada nije.
End of explanation
c=7
print c
Explanation: 1.7.3. Operatori pridruživanja
Operatori pridruživanja dodjeljuju vrijednosti operandima ili vrše operacije nad operandima:
* =
* +=
* -=
* *=
* /=
* %=
* **=
1.7.3.1. Operator =
Operator = dodjeljuje lijevom operandu vrijednost desnog operanda.
End of explanation
a=20
b=10
a+=b
print a
print b
Explanation: 1.7.3.2. Operator +=
Operator += zbraja lijevom operandu vrijednost desnog operanda te rezultat dodjeljuje lijevom operandu.
End of explanation
a=20
c=7
a-=c
print a
print c
Explanation: 1.7.3.3. Operator -=
Operator -= oduzima lijevom operandu vrijednost desnog operanda te rezultat dodjeljuje lijevom operandu.
End of explanation
a=20
b=10
a*=b
print a
print b
Explanation: 1.7.3.4. Operator *=
Operator *= množi desni operand s lijevim operandom te rezultat dodjeljuje lijevom operandu.
End of explanation
a=20
b=10
a/=b
print a
print b
Explanation: 1.7.3.5. Operator /=
Operator /= dijeli vrijednost desnog operanda s vrijednosti lijevog operanda te rezultat dodjeljuje lijevom operandu.
End of explanation
c=7
d=2
c%=d
print c
print d
Explanation: 1.7.3.6. Operator %=
Operator %= vraća ostatak dijeljenja vrijednosti desnog operanda s vrijednosti lijevog operanda te rezultat dodjeljuje lijevom operandu.
End of explanation
c=7
d=2
c**=d
print c
print d
Explanation: 1.7.3.7. Operator **=
Operator **= vrši eksponencijalnu funkciju, gdje je lijevi operand baza, a desni eksponent.
End of explanation
'a' in 'Niz znakova.'
'y' in "Niz znakova."
Explanation: 1.7.4. Operatori članstva
Operatori članstva ispituju nalazi se izraz u određenoj sekvenci, kao što su nizovi znakova ili liste. Operatori članstva su:
* in
* not in
1.7.4.1. Operator in
Operator in ispituje nalazi se vrijednost varijable u određenoj sekvenci te vraća logički tip podataka, odnosno True ako se vrijednost varijable nalazi u određenoj sekvenci, a False ako se ne nalazi.
End of explanation
'a' not in 'Niz znakova.'
'y' not in 'Niz znakova.'
Explanation: 1.7.4.2. Operator not in
Operator not in ispituje nalazi se vrijednost varijable u određenoj sekvenci te vraća logički tip podataka, odnosno True ako se vrijednost varijable ne nalazi u određenoj sekvenci, a False ako se nalazi.
End of explanation
2*5+2>=2**3*2
Explanation: 1.7.5. Složeni izrazi
U Pythonu je moguće postavljati složene izraze, odnosno izraze u kojima postoji više od jednog operatora.
End of explanation
int(3.7)
int('3')
Explanation: U tom slučaju je potrebno poznavati kojim redoslijedom će se prvo izvoditi koji operator, odnosno prioritete operatora. Slijedi lista prioriteta obrađenih operatora od najvišeg do najnižeg:
Operator | Opis
--- | ---
** | Eksponent
* / % | Operatori množenja, dijeljenja, ostatka cjelobrojnog dijeljenja
+ - | Operatori zbrajanja i oduzimanja
&lt;= &lt; &gt; &gt;= | Operatori uspoređivanja
&lt;&gt; == != | Operatori jednakosti
= %= /= /= -= += *= **= | Operatori pridruživanja
in, not in | Operatori članstva
not, or, and | Logički operatori
Zadatke možete naći ovdje: Zadaci
1.8. Osnovne funkcije
Funkcije su potprogrami koji primaju nula ili više argumenata i vraćaju jednu vrijednost. Funkcije za pretvaranje tipa podataka (casting) su:
* int (integer)
* float (floating point numbers)
* str (string)
Dodatna funkcija koja je opisana u ovom poglavlju je funkcija type().
1.8.1. Funkcija int()
Funkcija int() pretvara realni tip podatka u cjelobrojnu vrijednost ili niz znakova u kojem je pohranjena znamenka u cjelobrojnu vrijednost.
End of explanation
print float(2)
print 7/2
print float(7)/2
print 7/float(2)
print float(7/2)
Explanation: 1.8.2. Funkcija float()
Funkcija float() pretvara cjelobrojnu vrijednost u realni tip podatka.
End of explanation
str(7.6)
Explanation: Prvo je potrebno djeljenik ili djelitelj prebaciti iz cjelobrojne vrijednosti u realni tip podatka, a zatim izvršiti dijeljenje, ako želimo dobiti razlomački dio. Iz posljednjeg primjera vidljivo je da se količnik pretvara u realni tip podatka nakon cjelobrojnog dijeljenja, a on će u tom slučaju uvijek iznositi 0.
1.8.3. Funkcija str()
Funkcija str() pretvara brojčanu vrijednost u niz znakova.
End of explanation
type('niz')
type(2)
type(5.8)
type(False)
Explanation: 1.8.4. Funkcija type()
Funkcija type()ne pretvara tipove podataka, već vraća koji je tip podatka određena vrijednost.
End of explanation
print 'dar'+'ovi'
niz1='Ana i Ivo'
niz2='Iva i Jan'
print niz1[:3]+niz2[-3:]
Explanation: 1.9. Rad s nizovima znakova
1.9.1. Konkatenacija
U programiranju konkatenacija niza znakova je operacija spajanja znakova iz niza znakova navedenim redoslijedom (Concatenation). U Pythonu se konkatenacija vrši operatorom =.
End of explanation
niz1='Ana i Ivo'
niz2='Iva i Jan'
print niz1[:6]+niz2[-3:]
Explanation: Konkatenacija vrši samo spajanje nizova znakova. U slučaju da želimo iz prethodnog primjera dodati razmak, veznik i razmak, potrebno je to izričito navesti.
End of explanation
niz1='Ana i Ivo'
niz2='Iva i Jan'
print niz1[:3]+' i '+niz2[-3:]
Explanation: ili
End of explanation
ana=2000
luka=1995
print 'Ana je mlađa od Luke '+str(ana-luka)+' godina.'
Explanation: Kada se želi izvršiti ispis nizova znakova i brojčanih vrijednosti, prethodno je potrebno prebaciti brojčane vrijednosti u niz znakova funkcijom str.
End of explanation
s='Ana i Ivo'
print s.upper()
print s
Explanation: 1.9.2. Odabrane metode nad nizovima znakova
Već su ukratko ranije spomenute dvije metode nad nizovima znakova upper() i replace(). U ovom poglavlju opisane su još neke odabrane metode nad ovim tipom podatka:
* upper()
* lower()
* replace()
* count()
* find()
* strip()
* split()
* join().
1.9.2.1. Metoda upper()
Metoda upper() vraća niz znakova u kojem su sva slova pretvorena u velika slova, ali ne mijenja ulazni niz znakova.
End of explanation
s="Ana i Ivo"
print s.lower()
print s
Explanation: 1.9.2.2. Metoda lower()
Metoda lower() vraća niz znakova u kojem su sva slova pretvorena u mala slova, ali ne mijenja ulazni niz znakova.
End of explanation
niz='ananas, banana, jabuka, jagoda, mandarina'
print niz.replace('a','A')
print niz.replace('a','A',5)
print niz
Explanation: 1.9.2.3. Metoda replace()
Metoda replace() vraća niz znakova u kojem se stari podniz mijenja novim podnizom, ali se ne mijenja niz znakova nad kojim se vrši metoda. Sintaksa ove metode je niz.replace(old, new[, count]). Općenito se u Pythonu u oblim zagradama navode argumenti koji su obavezni, dok se u uglatim zagradama nalaze argumenti koji su opcionalni. Iz zapisa metode replace() vidljivo je da prima dva obavezna argumenta i jedan opcionalni. Argument old obavezan je argument koji sadrži stari podniz koji planiramo zamijeniti novim. Argument new obavezan je argument koji sadrži novi podniz kojim ćemo zamijeniti stari. Argument count opcionalni je argument koji sadrži cjelobrojnu vrijednost koliko puta se treba izvršiti zamjena. Ako argument nije naveden, vrši se zamjena svih nađenih pojavljivanja podniza.
End of explanation
niz='ananas, banana, jabuka, jagoda, mandarina'
print niz.count('an')
print niz.count('an',5)
print niz.count('an',5,10)
Explanation: 1.9.2.4. Metoda count()
Metoda count() vraća broj pojavljivanja nekog podniza. Sintaksa ove metode je niz.count(sub[, start[, end]]). Metoda prima jedan obavezni argument i dva opcionalna argumenta. Argument sub obavezni je argument koji sadrži podniz čiji broj pojavljivanja želimo izračunati. Argument start opcionalni je argument koji sadrži cjelobrojnu vrijednost početnog indeksa od kojeg kreće brojanje pojavljivanja podniza. Ako argument nije naveden, metoda kreće brojati od indeksa 0. Argument end opcionalni je argument koji sadrži cjelobrojnu vrijednost završnog indeksa do kojeg se vrši brojanje podniza. Argument je ovisan o argumentu start. Ako nije naveden argument start, ne može biti naveden niti argument end. Ako je pak naveden argument start, argument end može, ali i ne mora biti naveden. Ako argument end nije naveden, metoda završava s posljednjim indeksom niza.
End of explanation
niz='ananas, banana, jabuka, jagoda, mandarina'
print niz.find('an')
print niz.find('an',2)
print niz.find('an',10,40)
print niz.find('ga')
Explanation: 1.9.2.5. Metoda find()
Metoda find() vraća broj početni broj indeksa od kojeg kreće podniz koji tražimo. Sintaksa ove metode je niz.find(sub[, start[, end]]). Metoda prima jedan obavezni i dva opcionalna argumenta. Argument sub obavezni je argument koji sadrži podniz čiji početni indeks tražimo. Argument start opcionalni je argument koji sadrži vrijednost početnog indeksa od kojeg metoda kreće tražiti indeks podniza. Ako argument nije naveden, metoda kreće od indeksa 0. Argument end opcionalni je argument koji sadrži vrijednost završnog indeksa do kojeg metoda traži indeks podniza. Argument je ovisan o argumentu start. Ako nije naveden argument start, ne može biti naveden niti argument end. Ako je pak naveden argument start, argument end može, ali i ne mora biti naveden. Ako argument end nije naveden, metoda završava s posljednjim indeksom niza. U slučaju ako podniz ne postoji, tada vraća vrijednost -1.
End of explanation
niz=' ananas, banana, jabuka, jagoda, mandarina '
print niz
print niz.strip()
print niz.strip(' an')
print niz.strip('g')
Explanation: 1.9.2.6. Metoda strip()
Metoda strip() vraća string u kojem je podniz uklonjen s početka i kraja niza. Sintaksa ove metode je niz.strip([chars]). Metoda prima jedan opcionalni argument. Argument chars opcionalni je argument koji sadrži podniz koji želimo ukloniti s početka i kraja niza. Ako argument nije naveden, pretpostavljena vrijednost su znakovi za bjeline.
End of explanation
niz='ananas, banana, jabuka, jagoda, mandarina'
print niz.split()
print niz.split('ja')
print niz.split('ja',1)
Explanation: 1.9.2.7. Metoda split()
Metoda split() vraća tip podatka listu svih riječi iz niza znakova upotrebljavajući neki separator. Sintaksa ove metode je niz.split([sep[, maxsplit]]). Metoda prima dva opcionalna argumenta. Argument sep opcionalni je argument koji sadrži podniz koji želimo upotrijebiti kao separator. Ako argument nije naveden, pretpostavljena vrijednost je razmak. Argument maxsplit opcionalni je argument koji sadrži cjelobrojnu vrijednost koliko puta želimo izvršiti razdvajanje. Argument je ovisan o argumentu sep. Ako nije naveden argument sep, ne može biti naveden niti argument maxsplit. Ako je pak naveden argument sep, argument maxsplit može, ali i ne mora biti naveden. Ako maxsplit nije naveden, metoda vrši maksimalan mogući broj razdvajanja.
End of explanation
niz='ananas, banana, jabuka, jagoda, mandarina'
lista=niz.split(', ')
print lista
print '-'.join(lista)
Explanation: 1.9.2.8. Metoda join()
Metoda join() vraća niz u kojem su elementi liste spojeni separatorom. Sintaksa ove metode je niz.joint(list). U ovoj metodi separator je ustvari niz nad kojim se vrši metoda (niz). Metoda prima jedan obavezan argument. Argument list obavezni je argument koji sadrži listu čije elemente želimo spojiti pomoću niza znakova nad kojim vršimo metodu.
End of explanation
print ['banana',5,98.95]
Explanation: Zadatke možete naći ovdje: Zadaci
1.10. Rad s listama
Liste (list, sequence) (List) su složeni tipovi podataka koji mogu sadržavati više atomarnih podataka. Liste imaju linearnu strukturu podataka, odnosno elementi u listi poredani su nekim redoslijedom. Svakom elementu u listi dodijeljena je cjelobrojna vrijednost, koja predstavlja poziciju ili indeks elementa. Prvi indeks je 0. Sadržaj elementa tj. njegova vrijednost može se u listi pojaviti više od jednog puta. Elementi liste ne moraju biti isti tip podatka.
Lista se zapisuje u uglatim zagradama, a elementi liste razdvojeni su zarezom.
End of explanation
lista1=['banana',5,98.95]
lista2=[3,1,5,4,2]
lista3=['a','b','c','d','d']
print lista1
print lista2
print lista3
Explanation: Vrijednost liste dodjeljujemo varijabli operatorom pridruživanja =.
End of explanation
prazna_lista=[]
print prazna_lista
Explanation: Listu možemo inicijalizirati bez sadržavanja vrijednosti:
End of explanation
lista=['banana',5,98.95]
print lista[0]
print lista[-1]
print lista[:2]
print lista[-2:]
print lista[-2:1]
Explanation: Liste je moguće indeksirati, kao i nizove znakova:
End of explanation
lista4=['banana',5,98.95,[1,'dva',2]]
print lista4[0][-1]
print lista4[-1][1][0]
Explanation: Dodatno je kod lista moguće indeksirati unutar elemenata liste onih tipova podataka koji podržavaju indeksiranje (npr. nizovi znakova i liste) na sljedeći način:
End of explanation
lista1=['banana',5,98.95]
lista2=[3,1,5,4,2]
print lista1+lista2
Explanation: Nad listama je moguće vršiti konkatenaciju na sljedeći način:
End of explanation
lista1=['banana',5,98.95]
lista2=[3,1,5,4,2]
lista3=['a','b','c','d','d']
lista4=['banana',5,98.95,[1,'dva',2]]
print len(lista1)
print len(lista2)
print len(lista3)
print len(lista4)
print len(lista4[-1])
Explanation: Funkcija len() računa duljinu liste, odnosno vraća cjelobrojnu vrijednost broja elemenata u listi.
End of explanation
lista=['banana',5,98.95]
lista[0]='jabuka'
print lista
Explanation: Liste su promjenjivi tipovi podataka, tako da je moguće vrijednost postojećeg elementa liste promijeniti indeksiranjem tog elementa i dodjeljivanjem nove vrijednosti:
End of explanation
lista=['banana',5,98.95]
lista.append('tekst')
print lista
Explanation: 1.10.1. Odabrane metode nad listama
U ovom poglavlju opisane su metode koje se vrše nad listama:
* append()
* insert()
* remove()
1.10.1.1. Metoda append()
Metoda append() dodaje element u postojeću listu. Sintaksa ove metode je lista.append(obj).  Metoda prima jedan obavezan argument. Argument obj obavezni je argument koji sadrži vrijednost elementa koji želimo dodati u postojeću listu. Objekt se dodaje na kraj liste. Metoda ne vraća nikakvu vrijednost, već ažurira postojeću listu.
End of explanation
lista=['banana',5,98.95]
lista.insert(2,'tekst')
print lista
Explanation: 1.10.1.2. Metoda insert()
Metodom insert() moguće je dodati element u postojeću listu na određeno mjesto u listi. Sintaksa ove metode je lista.insert(index, obj). Metoda prima dva obavezna argumenta. Argument index obavezni je argument koji sadrži cjelobrojnu vrijednost indeksa na koji želimo dodati element u postojeću listu. Argument obj obavezni je argument koji sadrži vrijednost elementa koji želimo dodati u postojeću listu. Metoda ne vraća nikakvu vrijednost, već ažurira postojeću listu.
End of explanation
lista5=['banana',5,98.95,'tekst',5]
lista5.remove(5)
print lista5
Explanation: 1.10.1.3. Metoda remove()
Metoda remove() uklanja prvo pojavljivanje elementa iz postojeće liste. Sintaksa ove metode je lista.remove(obj). Metoda prima jedan obavezni argument. Argument obj obavezni je argument koji sadrži vrijednost elementa koji želimo obrisati iz postojeće liste. Metoda ne vraća nikakvu vrijednost, već ažurira postojeću listu.
End of explanation
lista5=['banana',5,98.95,'tekst',5]
del lista5[-1]
print lista5
Explanation: Osim ovom metodom, elemente liste moguće je brisati putem naredbe del i indeksa elementa:
End of explanation
a=3
if a>5:
    print 'Broj je veći od 5.'
b=10
if b>5:
    print 'Broj je veći od 5.'
Explanation: Zadatke možete naći ovdje: Zadaci
1.11. Kontrola tijeka
Kontrola tijeka (control flow, flow control) (Control flow) određuje kojim redoslijedom se vrše određene naredbe u računalnom programu. Naredbe kontrola tijeka postavljaju određene uvjete koji se trebaju ispuniti prije njihovog izvršavanja, odnosno, ako se uvjeti ne ispune, naredbe se neće izvršiti. Skup naredbi često je strukturiran u blok naredbi. U sintaksi Pythona blok naredbi definira se uvlakama, a najavljuje se dvotočkom.
Kontrola tijeka izvodi se selekcijom i iteracijom. Selekcija je grananje programa s obzirom na zadovoljenost nekog logičkog uvjeta. Naredba kojom se vrši selekcija naziva se if naredba. Iteracija je uzastopno ponavljanje niza naredbi, a vrši se for petljom ili while petljom.
U ovom poglavlju opisane su dvije naredbe kontrola tijeka:
* if naredba
* for petlja.
1.11.1. if naredba
Naredba kojom se vrši selekcija, odnosno grananje programa s obzirom na zadovoljenost jednog ili više logičkih uvjeta, naziva se if naredbom. Sintaksa naredbe ima jednu obaveznu if izjavu, jednu ili više opcionalnih elif izjava (od else if) i jednu opcionalnu else izjavu. Blok naredbi definiran je uvlakama, a najavljuje se dvotočkom.
Na sljedeći način ispisat ćemo "Broj je veći od 5." za sve brojeve koji su veći od 5 te provjeriti uvjet s brojevima 3 i 10:
End of explanation
a=3
if a%2==0:
    print 'Broj je paran.'
else:
    print 'Broj je neparan.'
b=10
if b%2==0:
    print 'Broj je paran.'
else:
    print 'Broj je neparan.'
Explanation: Kod provjere s brojem 3, logički uvjet nije ispunjen (tj. rezultat logičkog izraza je FALSE), jer 2 nije veći od 5 te se nije ispisao zadani tekst. Kod provjere s brojem 10, logički uvjet je ispunjen (tj. rezultat logičkog izraza je TRUE) te se ispisao zadani tekst.
Na sljedeći način ispisat ćemo "Broj je paran." za sve brojeve koji su parni, a "Broj je neparan." za sve brojeve koji su neparni te provjeriti blok naredbi s brojevima 3 i 10:
End of explanation
c=6
if c%2==0:
    if c<10:
        c*=3
else:
    c*=5
print c
d=11
if d%2==0:
    if d<10:
        d*=3
else:
    d*=5
print d
Explanation: U ovom primjeru provjeravamo je li ostatak dijeljenja s brojem 2 jednak 0 (if a%2==0). Ako je uvjet ispunjen (tj. rezultat logičkog izraza je TRUE), ispisat će se "Broj je paran." (print 'Broj je paran.'). Za sve ostale slučajeve (else), ispisat će se "Broj je neparan" (print 'Broj je neparan.).
Moguće je unutar if naredbe imati drugu if naredbu:
End of explanation
c=6
if c%2==0 and c<10:
    c*=3
else:
    c*=5
print c
d=11
if d%2==0 and c<10:
    d*=3
else:
    d*=5
print d
Explanation: U ovom primjeru provjeravamo je li broj djeljiv s 2. Ako je taj uvjet ispunjen, provjeravamo je li broj manji od 10. Ako je i taj uvjet ispunjen, broj množimo s 3. Ako broj nije djeljiv s 2, broj množimo s 5.
Isti zadatak moguće je riješiti logičkim operatorom and na sljedeći način:
End of explanation
e=10
if e%2==0 or e%3==0:
    e+=4
else:
    e-=8
print e
f=5
if f%2==0 or f%3==0:
    f+=4
else:
    f-=8
print f
Explanation: U ovom primjeru provjeravamo je li broj djeljiv s 2 i (logički operator and) je li broj manji od 10. Tek kada se oba uvjeta ispune, broj množimo s 3. Ako uvjet nije ispunjen, broj množimo s 5.
Na sljedeći način moguće je upotrijebiti logički operator or:
End of explanation
g=25
if g%2==0:
    print 'Broj je djeljiv s 2.'
elif g%3==0:
    print 'Broj je djeljiv s 3.'
elif g%5==0:
    print 'Broj je djeljiv s 5.'
elif g%7==0:
    print 'Broj je djeljiv sa 7.'
else:
    print 'Broj nije djeljiv s 2, 3, 5 ni 7.'
h=6
if h%2==0:
    print 'Broj je djeljiv s 2.'
elif h%3==0:
    print 'Broj je djeljiv s 3.'
elif h%5==0:
    print 'Broj je djeljiv s 5.'
elif h%7==0:
    print 'Broj je djeljiv sa 7.'
else:
    print 'Broj nije djeljiv s 2, 3, 5 ni 7.'
i=11
if i%2==0:
    print 'Broj je djeljiv s 2.'
elif i%3==0:
    print 'Broj je djeljiv s 3.'
elif i%5==0:
    print 'Broj je djeljiv s 5.'
elif i%7==0:
    print 'Broj je djeljiv sa 7.'
else:
    print 'Broj nije djeljiv s 2, 3, 5 ni 7.'
Explanation: U ovom primjeru provjeravamo je li broj djeljiv s 2 ili (logički operator or) je li broj djeljiv s 3. Samo je jedan uvjet potrebno izvršiti kako bi broju zbrojili 4. Ako nije ispunjen ni jedan od uvjeta, oduzima se broj 8.
Na sljedeći način možemo postaviti složeni blok naredbi:
End of explanation
for znak in 'neki niz':
    print 'Pomoćna varijabla "znak" poprima vrijednost: '+znak
Explanation: 1.11.2. for petlja
Petlja kojom se vrši iteracija, odnosno uzastopno ponavljanje niza naredbi, naziva se for petlja. Sintaksa petlje je for pomocna_varijabla in obj:. For petlja prolazi kroz neki objekt obj. U svakom prolasku pomocna_varijabla poprima vrijednost elementa objekta kroz koji iterira počevši od prvog elementa. Petlja se izvršava onoliko puta koliko ima elemenata u objektu.
1.11.2.1. Iteracija kroz niz znakova
Od tipova podataka koji su do sada opisani, iterirati se može kroz nizove znakova i liste. Kada stavimo niz znakova u for petlju, iterira se od prvog znaka niza do posljednjeg znaka. Na primjer, u sljedećem primjeru iterirat ćemo kroz niz znakova te u svakoj iteraciji ispisati trenutnu vrijednost pomoćne varijable.
End of explanation
for znak in 'neki niz':
    if znak in 'aeiou':
        print znak
Explanation: Iz primjera je vidljivo da pomoćna varijabla znak poprima vrijednosti svakog znaka neki niz kroz koji iteriramo, od prvog do posljednjeg. U prvoj iteraciji poprima vrijednost n, u drugoj iteraciji poprima vrijednost e, u trećoj iteraciji poprima vrijednost k i tako sve do posljednjeg znaka niza kroz koji iteriramo. Vrši se onoliko iteracija koliko ima znakova u nizu. Naziv pomoćne varijable znak je proizvoljan.
Moguće je kombinirati if naredbu i for petlju. U sljedećem primjeru ispisat ćemo samo samoglasnike iz niza znakova kroz koji iteriramo:
End of explanation
broj_samoglasnika=0
niz="Ovo je niz znakova."
for znak in niz:
    if znak in 'aeiou':
        broj_samoglasnika+=1
print broj_samoglasnika
Explanation: U ovom primjeru iteriramo kroz neki niz. U prvoj iteraciji znak poprima vrijednost n. Zatim se provjerava nalazi li se ta vrijednost u nizu 'aeiou'. Upotrebljavamo operator članstva in koji ispituje nalazi li se vrijednost pomoćne varijable u navedenom nizu znakova te vraća logički tip podatka. Budući da se n ne nalazi, prva iteracija for petlje završava i kreće druga iteracija for petlje. U drugoj iteraciji znak poprima vrijednost e. Zatim se provjerava nalazi li se ta vrijednost u nizu 'aeiou'. Budući da je uvjet ispunjen, ispisuje se trenutna vrijednost pomoćne varijable znak, što je u ovom slučaju e. Ovdje završava druga iteracija i kreće treća iteracija for petlje, kada znak poprima vrijednost k. Zatim se provjerava nalazi li se ta vrijednost u nizu aeiou. Budući da se k ne nalazi, završava treća iteracija petlje i kreće četvrta iteracija. U četvrtoj iteraciji znak poprima vrijednost i. Zatim se provjerava nalazi li se ta vrijednost u nizu aeiou. Budući da je uvjet ispunjen, ispisuje se trenutna vrijednost pomoćne varijable znak. Ovdje završava četvrta iteracija te kreće peta iteracija for petlje. I tako sve do kraja zadnjeg znaka u nizu neki niz. Vrši se i dalje onoliko iteracija petlje koliko ima znakova u nizu, samo zbog dodatnog uvjeta ispisujemo jedino one znakove koji ispunjavaju uvjet.
Brojačem možemo izbrojati koliko se puta neki fenomen pojavljuje u nizu, ali ga prvo moramo svesti na vrijednost 0 dodjeljivanjem te vrijednosti varijabli koju nazivamo brojač. Na primjer, možemo izračunati koliko se samoglasnika pojavljuje u nekom nizu znakova.
End of explanation
broj_samoglasnika=0
niz="Ovo je niz znakova."
for znak in niz.lower():
    if znak in 'aeiou':
        broj_samoglasnika+=1
print broj_samoglasnika
Explanation: Varijabla niz sadrži 7, a ne 6 samoglasnika. Logički uvjet u if naredbi provjerava nalazi li se pomoćna varijabla znak u nizu aeiou. Budući da je logički uvjet ispunjen samo kada znak poprimi vrijednost samoglasnika pisanog malim slovima, ovako postavljen uvjet preskače prvi znak u varijabli niz odnosno veliko slovo O. Problem se rješava trikom tako da se niz pretvori u mala slova metodom lower() na sljedeći način:
End of explanation
samoglasnici=''
niz="Ovo je niz znakova."
for znak in niz.lower():
    if znak in 'aeiou':
        samoglasnici+=znak
print samoglasnici
Explanation: U novi niz samoglasnici možemo pohraniti sve samoglasnike iz zadanog niza. Prvo je potrebno inicijalizirati prazan niz, a nakon toga iterirati kroz niz, provjeriti je li trenutni znak samoglasnik te ga pridružiti nizu samoglasnici ako je logički uvjet ispunjen.
End of explanation
for element in [1, 2, 'tri', [4,'pet'], 6.0]:
    print element
Explanation: 1.11.2.2. Iteracija kroz listu
Iterirati možemo kroz listu. Kada stavimo listu u for petlju, iterira se od prvog elementa liste do posljednjeg elementa liste. Na primjer, u sljedećem primjeru iterirat ćemo kroz listu te u svakoj iteraciji ispisati trenutnu vrijednost pomoćne varijable.
End of explanation
for element in [1, 2, 'tri', [4,'pet'], 6.0]:
    print 'Element je sljedećeg tipa podatka: '+ str(type(element))
Explanation: U ovom primjeru iteriramo kroz listu [1, 2, 'tri', [4,'pet'], 6.0]. U prvoj iteraciji pomoćna varijabla element poprima vrijednost 1. U drugoj iteraciji element poprima vrijednost 2. U trećoj iteraciji element poprima vrijednost 'tri'. U četvrtoj iteraciji element poprima vrijednost [4, 'pet']. U petoj i posljednjoj iteraciji poprima vrijednost posljednjeg elementa liste 6.0.
Za svaki element liste možemo provjeriti kojeg je tipa podatka pomoću funkcije type():
End of explanation
for element in ['jedan', 'dva', 'tri', 'cetiri', 'pet']:
    if len(element)>3:
        print element
Explanation: Iz primjera je vidljivo da su prva dva elementa liste cjelobrojne vrijednosti, treći element je niz znakova, četvrti element je lista, a peti element je realni tip podatka.
U sljedećem primjeru kombiniramo for petlju i if naredbu:
End of explanation
for element in ['jedan', 'dva', 'tri', 'cetiri', 'pet']:
    print element[0]
Explanation: U ovom primjeru iteriramo kroz listu ['jedan', 'dva', 'tri', 'četiri', 'pet'] i provjeravamo je li dužina elementa liste veća od 3. Ako je veća, onda ispisuje element. U prvoj iteraciji pomoćna varijabla element poprima vrijednost 'jedan'. Zatim se provjerava je li dužina trenutne vrijednosti pomoćne varijable veća od 3. Budući da je jedan ima više od 3 znaka, uvjet je ispunjen i trenutna vrijednost pomoćne varijable element se ispisuje. Kreće druga iteracija u kojoj element poprima vrijednost 'dva'. Zatim se provjerava je li dužina trenutne vrijednosti pomoćne varijable veća od 3. Budući da dva nema više od tri znaka (ima upravo tri znaka, ali ne više od tri znaka), uvjet nije ispunjen te tu završava druga iteracija i kreće treća iteracija. I tako sve do posljednjeg elementa liste.
U sljedećem primjeru ispisat ćemo prvi znak elemenata iz liste indeksiranjem:
End of explanation
duljina_znakova=0
lista=['jedan', 'dva', 'tri', 'cetiri']
for element in lista:
    duljina_znakova+=len(element)
print float(duljina_znakova)/len(lista)
print duljina_znakova/len(lista)
Explanation: Možemo izračunati prosječnu duljinu znakova elemenata liste.
End of explanation
i=0
lista=[1,2,3,4,5]
for element in lista:
    i+=element
print i
Explanation: U ovom primjeru prvo smo varijablu u koju ćemo spremati duljinu znakova sveli na vrijednost 0. Zatim smo u varijablu lista pohranili listu kroz koju ćemo iterirati. Za svaki element liste računali smo duljinu elementa (len(element)) i vrijednost dodavali u varijabli duljina_znakova. U prvoj iteraciji duljina_znakova poprimila je vrijednost 5, jer jedan ima 5 znakova. U drugoj iteraciji duljina_znakova poprimila je vrijednost 8, jer dva ima još 3 znaka, a 5+3 jednako je 8. U trećoj iteraciji duljina_znakova poprimila je vrijednost 11, jer tri ima još 3 znaka, a 5+3+3 jednako je 11. U četvrtoj iteraciji duljina_znakova poprimila je vrijednost 17, jer cetiri ima još 6 znakova, a 5+3+3+6 jednako je 17. Kada je završila iteracija, cjelobrojnu vrijednost varijable duljina_znakova pretvorili smo u realni tip podatka te podijelili s dužinom liste (tj. brojem elemenata u listi). Budući da su vrijednost varijable duljina_znakova i vrijednost izraza len(lista) cjelobrojni tipovi podataka, potrebno je jednu od vrijednosti pretvoriti u realni tip podatka, jer ćemo nećemo dobiti razlomački dio.
Kada imamo brojač kojim brojimo koliko se puta neki fenomen pojavljuje u određenoj sekvenci ili zbrajamo elemente, taj brojač moramo svesti na vrijednost 0 dodjeljivanjem tu vrijednost varijabli. U sljedećem primjeru izračunat ćemo zbroj elemenata u listi, a brojač pohraniti u varijabli i. Na kraju iteracije ispisujemo vrijednost brojača.
End of explanation
i=0
lista=[1,2,3,4,5]
for element in lista:
    i+=element
    print i
Explanation: Moguće je pratiti koje vrijednosti poprima brojač i u svakoj iteraciji, tako da se ispiše vrijednost i unutar for petlje:
End of explanation
<END_TASK>