2 PMG - Python PMG - Python Sadržaj 1. Pozdrav Pythonu? ........................................................................................................................ 3 1.1. Kako do Pythona .................................................................................................................. 3 1.2. Print - izlaz............................................................................................................................. 3 1.2.1. Još malo znakovnih nizova (string) ........................................................................... 4 1.2.2. Formatirani ispis ........................................................................................................... 4 1.3. Operator pridruživanja ........................................................................................................ 5 1.4. Varijable ................................................................................................................................. 6 1.5. Operatori ................................................................................................................................ 6 1.6. Ponavljanje............................................................................................................................. 7 Grananje toka naredbom if ................................................................................................... 9 2. 3. 2.1. Osnovna usporedba ............................................................................................................. 9 2.2. I – ILI .................................................................................................................................... 10 2.3. Logičke (Booleove) varijable ............................................................................................. 10 2.4. Else i Else If .......................................................................................................................... 11 2.5. Usporedba tekstova............................................................................................................ 12 2.6. Ponavljanje........................................................................................................................... 12 Petlje ............................................................................................................................................. 14 3.1. FOR ....................................................................................................................................... 14 4. Moduli .......................................................................................................................................... 16 5. Funkcije ........................................................................................................................................ 16 6. 5.1. Osnovna svojstva funkcije ................................................................................................. 16 5.2. Definicija funkcije ............................................................................................................... 16 5.3. Rekurzije .............................................................................................................................. 17 Liste .............................................................................................................................................. 19 3 PMG - Python 1. Pozdrav Pythonu? 1.1. Kako do Pythona Na stranici http://www.python.org/ možete preuzeti, najnoviju verziju Python-a pripremljenog za Vaš operativni sustav. Nakon instalacije pokrenite IDLE (Python GUI) i pojavit će Vam se prozor kao na slici (Slika 1. Python Shell). Slika 1. Python Shell Python IDLE je vrlo sposobno integrirano razvojno okruženje, kojim ćemo se poslužiti u početku korištenja Python-a. 1.2. Print - izlaz Upišemo li u IDLE redom ove jednostavne linije koda, dobivamo: >>>print ("Pozdrav!") Pozdrav! >>>print (2+3) 5 >>>print ("2 + 3") 2 + 3 Naredba za ispis je print(). Unutar zagrada upišemo što želimo da nam program ispiše. Koristimo li navodnike, govorimo računalu da ispiše točno to što smo napisali. Kao npr. Kad smo upisali 2+3 bez navodnika, računalo je ispisalo aritmetički zbroj zadanih brojeva (2 i 3) dok je u drugom slučaju kad smo koristili navodnike ispisalo 2+3. Pokušamo li napisat >>>print(Pozdrav!) 4 PMG - Python Računalo javlja grešku (SyntaxError: invalid syntax), Problem je u tome što smo koristili znak ! koji ne možemo koristiti za naziv varijabli, i bez znaka ! računalo bi javilo grešku jer bi na riječ Pozdrav gledalo kao na varijablu koja nije deklarirana. Drugim riječima Python na vrijednost unutar zagrada koje nisu unutar navodnika gleda kao matematičke vrijednosti. Želimo li ispisati više vrijednosti, iste odvajamo zarezom: >>>print ("Zbroj 10 i 10 je:", 10 +10) Zbroj 10 i 10 je: 20 Ili >>>print ("Zbroj 10 i 10 je:", "10 +10") Zbroj 10 i 10 je: 10 +10 1.2.1. Još malo znakovnih nizova (string) Posebni znak \n \t \\ \' \'' Opis djelovanja Prijelaz u novi red Tabulator Ispisati lijevo ukošenu crtu Ispisati jednostruki navodnik Ispisati dvostruki navodnik Ili Želim li ispisati više redova: 1.2.2. Formatirani ispis Želimo li ispisati više varijabli popraćenih odgovarajućim tekstom koristim print funkciju na sljedeći način: Uočimo da unutra zagrada možemo izostaviti brojeve ako se podrazumijeva da podaci idu ulaznim redom. Ponekad ćemo htjeti pobliže označiti koji tip podataka ispisujemo i u tom ćemo slučaju unutar vitičastih zagrada iza rednog broja varijable napisati dvotočku i nakon toga oznaku tipa 5 PMG - Python d – ako ispisujemo cijeli broj, f – ako ispisujemo realni broj, s – ako ispisujemo string 1.3. Operator pridruživanja Jedan od najosnovnijih operatora svih programskih jezika je operator pridruživanja. Njime dodjeljujemo vrijednost varijabli da bi istu kasnije mogli koristiti. #Kreiramo varijablu x i pridružujemo joj vrijednost 10 x=10 #Ispisujemo vrijednost pohranjenu u varijabli x print (x) #Ova linija koda ispisuje znak x a ne vrijednost u x print ("x") #Ispisuje: "x = 10" print("x =", x) U gornjem primjeru uočavamo razliku između ispisa x kad se nalazi unutar navodnika i izvan njih. Ako se x nalazi unutar navodnika računalo ispisuje znak x, a ako je zadan samo x bez navodnika računalo će ispisati vrijednost pohranjenu u varijabli x. Pridruživanje vrijednosti varijabli je obrnuto od algebarskih jednadžbi. Sa lijeve strane znaka jednakosti se nalazi varijabla dok je desno izraz. Pogledajte sljedeći primjer koji je potpuno drugačiji od nama poznatih matematičkih jednadžbi. U ovom primjeru varijabli x pridružujemo vrijednost varijable x (nje same) uvećane za 1. x = x +1 Zadatak 1: Što ispisuje sljedeći program? x = 5 x = x + 1 print (x) Kraći zapis x = x + 1 je: x += 1 i u ovom slučaju varijabli x pridružujemo vrijednost nje same uvećane za 1. 6 PMG - Python 1.4. Varijable Praksa je da varijable u Python-u započinjemo malim slovom, veliko slovo i podvlaka su rezervirani za neke specijalne slučajeve. Nakon prvog malog slova varijabla može sadržavati velika i mala slova kao i brojeve i podvlake. Varijable ne smiju sadržavati razmake! Varijable su osjetljive na velika i mala slova, tako u sljedećem primjeru program će ispisati 6 umjesto pet, jer smo definirali dvije različite varijable. x = 6 X = 5 print(x) 1.5. Operatori Za složenije matematičke operacije možemo koristiti sljedeće operatore: Tabela 1: Operator + * / // ** % Operacija Zbrajanje Oduzimanje Množenje Dijeljenje Cjelobrojno dijeljenje Eksponent Modul Primjer a=3+2 a=3-2 a=3*2 a= 3/2 a=3//2 a=3**2 a= 3%2 I u Python-u vrijede sva pravila kao i u matematici, pa tako sljedeći primjer neće dati ispravnu vrijednost srednje vrijednosti. srednja_vrijednost=90+86+100+71+98/5 Provo će se odraditi operator dijeljenja ( 98/5) pa tek onda zbrajanje. Problem možemo riješiti koristeći zagrade. srednja_vrijednost=(90+86+100+71+98)/5 Primjer 1: Koristeći Python napišimo program koji izračunava koliko kilometara može prijeći automobil sa litrom goriva ako nam je poznato da sa 13,5 l prijeđe 198 km. k=198/13.5 print(k) Ovaj kod možemo unaprijediti koristeći varijable. To nam omogućava lakšu izmjenu parametara bez zadiranja u matematičku jednadžbu. k=198 l=13.5 k2=k/l print(k2) 7 PMG - Python Ovakav je program teško razumljiv, pa je preporučljivo varijablama davati svima razumljiva imena. Npr: prijeđeniKilometri = 198 potrošenoLitara = 13.5 kilometaraSaLitrom = prijeđeniKilometri/potrošenoLitara print(kilometaraSaLitrom) Program je mnogo korisniji ako je interaktivan tj. ako postoji interakcija između programa i korisnika na način da program traži korisnika da unese broj prijeđenih kilometara i količinu potrošenog goriva. Za takav način rada koristimo naredbu za unos podataka (input). #Skor pa radi :-) prijeđeniKilometri = input(" Unesite prijeđene kilometre :") potrošenoLitara = input(" Unesite potrošeno gorivo :") kilometaraSaLitrom = prijeđeniKilometri/potrošenoLitara print(kilometaraSaLitrom) Ako pokušamo pokrenuti ovaj program izbacit će nam grešku: (TypeError: unsupported operand type(s) for /: 'str' and 'str') Zašto je došlo do pogreške demonstrirat ćemo malom izmjenom programa: prijeđeniKilometri = input(" Unesite prijeđene kilometre :") potrošenoLitara = input(" Unesite potrošeno gorivo :") x = prijeđeniKilometri + potrošenoLitara print(" Zbroj kilometara i litara je:", x) Pokrenemo li gornji program dobiti ćemo: Unesite prijeđene kilometre:100 Unesite potrošeno gorivo:10 Zbroj kilometara i litara je: 10010 Program nije zbrojio brojeve, on je samo stavio jedan iza drugog! Zašto se to dogodilo? Program ne zna da smo mi unijeli brojeve i kao takav, on na unos gleda kao na tekst. Mogli smo unijeti i „Pero“ i „Ivo“, te bi program ispisao: PeroIvo. Da bi računalo znalo da ulaze brojevi, moramo mu to reći. To radimo pomoću funkcija int() ili float(). Int koristimo za cijele brojeve, dok za decimalne koristimo float. prijeđeniKilometri = float(input(" Unesite prijeđene kilometre :")) potrošenoLitara = float(input(" Unesite potrošeno gorivo :")) kilometaraSaLitrom = prijeđeniKilometri/potrošenoLitara print(kilometaraSaLitrom) 1.6. Ponavljanje 1. Napiši liniju koda koja ispisuje tvoje ime. 2. Kako se dodaje komentar u program? 3. Što će ispisati sljedeća linija koda? print(2/3) 8 PMG - Python 4. Napiši liniju koda koja stvara varijablu „pi“ i pridružuje joj odgovarajuću vrijednost. 5. Napišite liniju koda koja traži korisnika da unese duljinu stranice kvadrata i rezultat pridružuje varijabli. Budi siguran da je primljena vrijednost pohranjena kao cijeli broj. 6. Napiši program koji ispisuje površinu kvadrata koristeći varijablu iz zadatka 5. 7. Napravi sve isto kao u pitanjima 5 i 6 ali za površinu elipse s = πab 8. Napravi sve isto kao u pitanjima 5 i 6 ali koristeći formulu za izračun tlaka idealnog plina: p= nRT V gdje je n-broj molova, R opća plinska konstanta (8,3144), T termodinamička temperatura, V volumen plina. 9 PMG - Python 2. Grananje toka naredbom if Da bi računalo bilo sposobno donositi ikakve odluke, potrebna su grananja. Prilikom grananja računalo se pita, dali je ili nije zadovoljen uvjet iza ključne riječi if!? if I to je ključ za donošenje bilo kakve odluke. 2.1. Osnovna usporedba Ako je vrijednost izraza iza riječi if logička istina (true), izvodi se blok naredbi koje slijede iza izraza. U protivnom taj aj blok se preskače i izvođenje se nastavlja od prve naredbe iza bloka. Slika 2: jednostavno grananje Budući da je a manje od b ispisat će se prvi blok naredbe, no što bi se ispisalo da je b bilo jednako 5? U tom slučaju niti jedan jeda uvjet nije zadovoljen te program ne bi ispisao ništa. Mogli smo napisati program kojim provjeravamo dali je a veći ili jednak b ili obrnuto. Slika 3. Ili smo se mogli pitat dali su brojevi jednaki (==) ili možda različiti (!=): (!=) NAPOMENA: vrlo česta pogrješka je korištenje znaka = umjesto ==, ako želimo usporediti dali je nešto jednako, koristimo ==, a za pridruživanje vrijednosti znak =. 10 PMG - Python Slika 4: najčešća pogrješka 2.2. I – ILI Naredbom if možemo provjeriti i više logičkih izraza (uvjeta), prema pravilima logičke (Booleove) algebre. Slika 5: Logičko I i ILI 2.3. Logičke (Booleove) varijable Python u potpunosti podržava logičke varijable, koje mogu biti istina (True) ili laž (False). Takve varijable možemo koristiti i prilikom grananja. Ako za grananje koristimo logičke izraze nisu nam potrebni logički operatori. Također varijabli možemo dodijeliti rezultat usporedbe, tako u donjem kodu varijabli pridružujemo vrijednost usporedbe varijable a i b, ako su jednake c će biti istina dok u suprotnom c je laž. 11 PMG - Python 2.4. Else i Else If Donji program traži od korisnika da unese vrijednost temperature, te ispisuje dali je vani vruće. Želimo li da se ispiše „Vani nije vruće“ u slučaju da unesena temperatura manja ili jednaka 30, gornje grananje proširimo novim blokom naredbi koji se izvršava ako izraz daje logičku neistinu. Kao u primjeru: Moguće je i nadovezati nekoliko blokova if naredbi. U Python-u je to naredba elif. Gornji program ne priječi korisnika da unese da je temperatura zraka 100 °C, pa ga je potrebno još malo nadograditi. 12 PMG - Python 2.5. Usporedba tekstova Pokušamo li u gornjem programu umjesto „Miro“ unijeti „miro“, uvjet neće biti zadovoljen. Razlog tomu je što Python razlikuje velika i mala slova. To se možemo poslužiti malim trikom, da sva unesena slova pretvorimo u mala. 2.6. Ponavljanje 1. Odredite vrijednost za svaki od ponuđenih izraza i provjerite ispravnost svojih odgovora pomoću Python-a. a. True and not False b. True or True and False c. Not True or not False d. True and not 0 e. 52 < 52.3 f. 1 + 32 < 32.3 2. Opiši kako radi and operacija u Pythonu. 3. Napišite program kojim ćete ispitati dali je upisani broj paran ili neparan i shodno tome ispisati poruku. 4. Mještani su odlučili uz rijeku koja prolazi njihovim mjestom postaviti niz naizmjenično plavih i crvenih klupa s tim da prva klupa u nizu bude crvena. 13 PMG - Python Izračunali su da trebaju postaviti točno n klupa. Napiši program koji će za učitani broj klupa n ispisati koliko mu treba crvenih a koliko plavih klupa. 5. Napišite program koji za učitani cijeli broj provjerava da li pripada skupu prostih brojeva. Ako pripada program će ispisati „Uneseni broj je prosti broj“, a u suprotnom ispisuje uneseni broj. 14 PMG - Python 3. Petlje 3.1. FOR Donji program koristi for petlju za ispis riječi „Hi“ 10 puta, tj. deset puta se poziva funkcija print(). I pritom vidimo da je riječ ''Hi'' ispisana svaki put u novi red. To je zato što funkcija print() unaprijed ima postavljenu vrijednost end='\n', tj. funkcija print() na kraju ispisuje ono što je zadano sa parametrom end. Vidimo da umjesto prelaska u novi red, u ovom slučaju funkcija print() je sve ispisala u jednom redu. Kombinacijom gornja dva ispisa možemo ispisati prvih sto brojeva tako da u svakom redu ispišemo po deset brojeva. 15 PMG - Python A može to i ljepše: Što smo dobili sa '{:3d}'? Probajte predvidjeti što će ispisati sljedeći programi: 16 PMG - Python 4. Moduli Do sad smo koristili ugrađene funkcije kao što su print() i input() njih i njima slične možemo koristiti čim pokrenemo Python – one su ugrađene u njegov osnovni kostur. Međutim za Python posjeduje i mnoge druge funkcije. Njih možemo pronaći u podmapi osnovne mape Python-a. Želimo li matematičke funkcije kao npr. sin(), cos(), log() i slično, koristimo modul math. 5. Funkcije Funkcije su važan alat za pisanje složenih programa. O njima možete razmišljat kao o malim programima koji se nalaze unutar glavnog programa. Dva su osnovna razloga za korištenje funkcija. Prvi, one olakšavaju razumijevanje koda i čine ga lakšim za čitanje. Drugi, omogućavaju višestruko pozivanje istog koda. 5.1. Osnovna svojstva funkcije Svaka funkcija ima svoje jedinstveno ime. Koristeći to ime u drugim dijelovima programa izvršavamo dio koda koji je naveden u funkciji. Kažemo da smo u tom trenutku „pozvali funkciju“. Ona može biti pozvan od bilo koje druge funkcije. Funkcija je također neovisna što znači da izvođenje njezinog koda uopće ne ovisi o drugim dijelovima programa. Funkcija može vratiti vrijednost pozivajućem programu 5.2. Definicija funkcije Opći oblik: def ime_funkcije(argumenti): blok naredbi return izraz Def – ključna riječ kojom u Python-u definiramo novu funkciju, nakon koje dolazi ime funkcije. Unutar zagrada mogu (a i ne moraju) se nalaziti argumenti koje prosljeđujemo funkciji. Naredba return služi za vraćanje u nadređenu funkciju ili vraća rezultat izvršavanja u nadređenu funkciju. 17 PMG - Python 5.3. Rekurzije Jedna od osnovnih algoritamskih tehnika u kojem potprogram neposredno ili putem drugog potprogama poziva samog sebe. To se naziva rekurzivni poziv funkcije ili kraće rekurzija. Karakterizira je jednostavan i efikasan zapis, ali skriva kao što ćemo vidjeti mnoge nedostatke. Naravno da pozivanje samog sebe ne može ići u nedogled, jer se proces izvršavanja rekurzije nikad ne bi zaustavio. Mora postojati uvjet prekida, kada potprogram danu operaciju izvršava bez pozivanja samog sebe. Potrebu postojanja uvjeta prekida pojasnio bih pitanjem? Zašto se dug napravljen kreditnom karticom, ne može platiti istom kreditnom karticom? (pitanje prof. sa FER-a kad objašnjavaju nužnost postojanja uvjeta prekida). Neki programski jezici ne podržavaju rekurziju. Rekurzivni programi su kraći, ali je izvođenje programa dulje. Dakle, ako se njome rukuje pravilno, rekurzija može biti vrlo djelotvorno sredstvo pri rješavanju algoritma. S druge strane, ukoliko se njome nepropisno rukuje može biti vrlo opasna.... Prvi korak pri potpunoj kontroli rekurzije je razumijevanje njezina rada! Cilj rekurzije je razbijanje složenog na jednostavnije probleme. Karakteristično je što su ti jednostavniji problemi potpuno istog tipa kao polazni problem (poput odraza u ogledalu zamislite da se nalazite između dva ogledala, okrenuta jedno nasuprot drugom. Tada biste vidjeli mnogo svojih odraza, jednog iza drugoga, svaki bi bio nešto manji od prethodnog). U jednom trenutku dobiveni problem je toliko jednostavan da je njegovo rješenje očito, te ono zatim dovodi do rješenja polaznog problema. Kako rade rekurzivni programi? Koristi se struktura podataka nazvana stog (eng. stack) za pohranjivanje varijabli rekurzivne funkcije. U njemu se posljednji pohranjeni podatak prvi uzima u obradu (LIFO - Last In First Out). Sada se proces izvršavanja preusmjerava na potprogram koji je pozvan (ta ista funkcija!), dok se sve varijable prije pozivanja spremaju na stog, da bi se nakon njegovog završetka izvršavanje nastavilo od mjesta s kojeg je pozvan, te vraćanja varijabli sa stoga. Kojeg završetka? Kada se ispuni uvjet prekida pozivanja funkcije. Naravno da ovakav način rada troši dodatno vrijeme i memoriju na spremanje i očitavanje vrijednosti varijabli, što ima za posljedicu sporije rješavanje problema. Mora se ovdje napomenuti da je dokazano da svako rekurzivno rješenje se može napisati kao nerekurzivno, pa je preporučljivo koristiti rekurziju samo u slučaju kada se nerekurzivni pristup teško ostvaruje. Primjer 1: Računanje produkta prvih n prirodnih brojeva, tzv. "n faktorijela", u oznaci n!, n je prirodan broj. Po definiciji je 0! = 1 i 1! = 1 Uočimo da vrijedi n! = n* (n-1)! Dakle, rekurzivna funkcija bi glasila: 18 PMG - Python Primjer: n=4! k = fakt (4); = 4 * fakt (3); = 3 * fakt (2); = 2 * fakt (1); =1 Zadaci: 1. Napisati rekurzivnu funkciju koja će izračunati zbroj prvih n prirodnih brojeva. 2. Napisati rekurzivnu funkciju za potenciranje prirodnog broja prirodnim brojem. 3. Napisati rekurzivnu funkciju za pretvaranje prirodnog broja u binarni brojevni brojevn sustav. 4. Napisati rekurzivnu funkciju koja će izračunati umnožak parnih prirodnih brojeva do prirodnog broja n. 5. Napisati rekurzivnu funkciju koja će izračunati zbroj prvih n neparnih prirodnih brojeva. 6. Napisati rekurzivnu funkciju koja će izračunavati izračunavati umnožak znamenki prirodnog broja. 19 PMG - Python 6. Liste U liste se smještaju podaci koji su na neki način srodni kako bi se lakše ili jednostavnije postupalo s njima. U nekim drugim programskim jezicima takva sljedna struktura naziva se poretkom, poljem ili nizom (array) pri čemu veličina poretka mora biti unaprijed poznata i svi elementi moraju biti istog tipa. Suprotno tomu, u Pythonu elementi liste mogu sadržavati različite tipove podataka i mogu se dinamički (tijekom uporabe) povećavati ili smanjivati. Liste se mogu zadavati na različite načine. Najjednostavniji je način stvaranje liste nabrajanje elemenata liste odvojenih zarezom i to unutar uglatih zagrada. Nakon toga možemo elemente liste dohvaćati tako da uz ime liste u uglatim zagradama napišemo indeks elementa. Pristup pojedinom članu liste: 20 PMG - Python Program može pohranjivat i stringove unutar liste: Ili čak druge liste: Želimo li dodavati jedan po jedan član u listu možemo kreirati praznu listu i zatim koristiti funkciju append. Primjer: Lista kreirana unosom korisnika: Zadatak: Ispišite listu iz gornje primjera. Primjer: Zbrajanje vrijednosti iz liste: U gornjem primjeru očito je da nam funkcija len(ime_liste) vraća dužinu liste, tj. broj elemenata unutar liste. 21 PMG - Python Zadatak: Kreirajte listu brojeva i uvećajte sve vrijednosti unutar liste za duplo. Još malo o metodama listi Operatori za liste Za liste vrijede isti operatori: +, *, in, not in kao i za stringove: Operator + * in not in Opis djelovanja nadovezivanje uvišestručenje, jedan operand je tipa int element je sadržan u listi element nije sadržan u listi Evo nekoliko primjera: Zadatak: Napišite program koji će ispisivati najveći i najmanji element liste od 20 elemenata, čiji su elementi nasumično generirani prirodni brojevi do 100. ( u programu je potrebno napisati funkciju koja će vraćati najveći i najmanji element generirane liste, ne koristeći ugrađene funkcije). 22 PMG - Python Ugrađene funkcije nad listama: Funkcija len(L) min(L) max(L) Evo nekoliko primjera uporabe tih funkcija: Opis djelovanja vraća duljinu liste vraća najmanju vrijednost elementa liste vraća najveću vrijednost elementa liste
© Copyright 2024 Paperzz