[CLANAK 2.] - Python 2: Kontrola toka programa

Koki007 nas uvodi u svijet Pythona i PyGamea!

Moderator: Danijel Korent

Post Reply
User avatar
Danijel Korent
Romulanski špijun na Zemlji
Posts: 1583
Joined: Fri Sep 05, 2008 12:35 pm
Smallest prime number bigger than 20: 23
Location: Njemacka
Contact:

[CLANAK 2.] - Python 2: Kontrola toka programa

Post by Danijel Korent » Thu Mar 04, 2010 11:26 am

2. KONTROLA TOKA PROGRAMA


2.1. UVOD
U ovom poglavlju ce biti objasnjeno nekoliko osnovnih naredba za kontrolu toka programa u pythonu: "if" i "while", te nekoliko naredba isto za kontrolu toka koje se mogu upotrijebiti nakon nekih od tih naredba: "elif", "else", "continue" i "break". Takoder ce ovdje biti spomenuta i "pass" naredba, te funkcija "raw_input".

Evo da odma objasnim funkciju raw_input(), ova funkcija se koristi za input korisnika, kad se u programu pozove ova funckija, program ceka da korisnik nesto upise i to vrati kao string. U zgradu se moze upisati poruka koju ispise prije nego sto pocne cekak unos od korisnika.

primjer_1:

Code: Select all

ime = raw_input("Upisite svoje ime: ")
print "Dobrodosao", ime
primjer_2:

Code: Select all

broj = int(raw_input("Upisite svoj sretni broj: "))
print "Vas sretni broj je:", broj

2.2. "IF" NAREDBA
Naredba "if" logicki provjerava neki izraz, i ako je rezultat "True" izvrsi se neki dio koda. Upotrebljava se tako da se prvo napise sama naredba "if", pa neki izraz te dvotocka, nakon cega se ispod te naredbe u indentu pise kod koji se izvrsi ukoliko je zadani izraz "True".

Primjer:

Code: Select all

a = int(raw_input("Unesite neki broj: "))
if a > 5:
	print "Varijabla a je veca od 5"
Kada se unese broj veci od 5 program ispise poruku "Varijabla a je veca od 5", ako nije veca program nista ne ispise.


2.2.1. "ELIF" NAREDBA
Naredba "elif" nam omogucuje da dodamo proizvoljan broj uvjeta u istom indentu za petljom "if".

Primjer:

Code: Select all

a = int(raw_input("Unesite neki broj: "))
if a > 5: 
	print "Varijabla a je veca od 5"
elif a < 5: 
	print "Varijabla a je manja od 5"
naredba "elif" se izvrši samo ukoliko prethodni "if" ili "elif" u indentu nije bio ispunjen.


2.2.2. "ELSE" NAREDBA
Naredba "else" nam omogucuje da zadamo programu sto da napravi ako nijedan uvjet u if-elif petlji nije ispunjen:

Primjer:

Code: Select all

a = int(raw_input("Unesite neki broj: "))
if a > 5: 
	print "Varijabla a je veca od 5"
elif a < 5: 
	print "Varijabla a je manja od 5"
else:
	print "Varijabla a nije ni manja ni veca od 5, odnosno sadrzi vrijednost 5"
2.3. "WHILE" NAREDBA
Naredba "while" logicki provjerava neki izraz i izvrsava zadani kod tako dugo dok je izraz True, odnosno kaze se da je kod u petlji. Upotrebljava se tako da se prvo napise sama naredba "while", pa neki izraz te dvotocka, nekon cega se ispod te naredbe u indentu pise kod koji se stalno iznova izvrsava ukoliko je izraz "True".

Primjer:

Code: Select all

a = 1
while a < 10:
	a = a + 1
	print a
	
print "Kraj programa"

2.3.1. "CONTINUE" NAREDBA
Kad se ova naredba pozove u pelji, izvrsavanje zadanog koda u indentu se ne izvrsi do kraja nego se prekida kod te naredbe i pocinje izvrsavanje koda u indentu ispocetka, znaci sama petlja se i dalje izvrsava.

Primjer:

Code: Select all

a = 1
while a < 10:
	a = a + 1
	if a == 5: continue
	print a

print "Kraj programa"
petlja preskace ispisivanje naredbe print a kad je varijabla a == 5

2.3.2. "BREAK" NAREDBA
Ova naredba je slicna "continue" naredbi sa razlikom da se petlja petlja vise ne izvrsava nego se potpuno izlazi iz nje.

Primjer:

Code: Select all

a = 1
while a < 10:
	a = a + 1
	if a == 5: break
	print a

print "Kraj programa"

ako je varijabla a == 5, izlazi se iz while petlje

2.4. "PASS" NAREDBA
Ova naredba ne radi apsolutno nista, i najcesce sluzi samo kao "placeholder" kad jos nema koda ili za lakse pracenje indenta kod visetrukih levela indenta.

Primjer:

Code: Select all

while Bodovi > 200:
	pass # TODO: napisati kod

atari
Posts: 61
Joined: Mon Feb 22, 2010 8:13 am
Smallest prime number bigger than 20: 23

Re: [CLANAK 2.] - Python 2: Kontrola toka programa

Post by atari » Thu Mar 04, 2010 2:12 pm

Da li postoji trenarni operator u Pythonu ?
My program doesn't have bugs. It just develops random features.

User avatar
Luka
Posts: 1384
Joined: Tue Aug 26, 2008 3:32 pm
Smallest prime number bigger than 20: 23

Re: [CLANAK 2.] - Python 2: Kontrola toka programa

Post by Luka » Thu Mar 04, 2010 5:23 pm

Da:

Code: Select all

a if a > b else b
(Python 2.5+)

Usput, iako se radi o jedinom ternarnom operatoru u Pythonu (pretpostavljam), riječ "ternarni" označava da se radi o operatoru (funkciji) s 3 operanda (nasuprot unarnim, odnosnom binarnim (poput ! i +)) - a ne o operatoru za takvu vrst funkcionalnosti (spoj izraza za uvjet, što-ako-istina i što-ako-laž)
  • You know your project is in trouble when..
    ...when you wonder if you could optimize your fps counter function in order to gain extra fps...
    ...and you double your fps doing so.

User avatar
bytespiller
DB Contest Winner '09
Posts: 2328
Joined: Fri Sep 12, 2008 11:46 am

Re: [CLANAK 2.] - Python 2: Kontrola toka programa

Post by bytespiller » Thu Mar 04, 2010 9:56 pm

Koki, naredbu ELIF si nekako površno objasnio. Valjalo je spomenuti da se ELIF izvršava samo ukoliko prethodni IF ili ELIF u indentu nije bio ispunjen.

Primjerice ovaj kod;

Code: Select all

a = 1
b = 2
c = 3

if a == 1: print "Jedan"
elif b == 2: print "Dva"
elif c == 3: print "Tri"
kao rezultat pokretanja ispisuje se samo "Jedan" iako su svi uvjeti istiniti.

EDIT: opa, vidi kako Luka zna o Pythonu, a ja mislio da je on isključivo cepepeovac! :D

User avatar
Luka
Posts: 1384
Joined: Tue Aug 26, 2008 3:32 pm
Smallest prime number bigger than 20: 23

Re: [CLANAK 2.] - Python 2: Kontrola toka programa

Post by Luka » Thu Mar 04, 2010 10:24 pm

Mah, samo natucam nešto :D (gornji kod je c/p s random stranice :D)
  • You know your project is in trouble when..
    ...when you wonder if you could optimize your fps counter function in order to gain extra fps...
    ...and you double your fps doing so.

User avatar
Denis
Sajentist on djuti!
Posts: 2618
Joined: Tue Aug 26, 2008 9:35 pm
Smallest prime number bigger than 20: 23

Re: [CLANAK 2.] - Python 2: Kontrola toka programa

Post by Denis » Thu Mar 04, 2010 10:29 pm

Jedno offtopic pitanje @koki. Gdje je članak 1.?

User avatar
Luka
Posts: 1384
Joined: Tue Aug 26, 2008 3:32 pm
Smallest prime number bigger than 20: 23

Re: [CLANAK 2.] - Python 2: Kontrola toka programa

Post by Luka » Thu Mar 04, 2010 10:35 pm

http://doublebuffer.org/forum/viewtopic.php?f=45&t=575" onclick="window.open(this.href);return false;
  • You know your project is in trouble when..
    ...when you wonder if you could optimize your fps counter function in order to gain extra fps...
    ...and you double your fps doing so.

User avatar
Danijel Korent
Romulanski špijun na Zemlji
Posts: 1583
Joined: Fri Sep 05, 2008 12:35 pm
Smallest prime number bigger than 20: 23
Location: Njemacka
Contact:

Re: [CLANAK 2.] - Python 2: Kontrola toka programa

Post by Danijel Korent » Thu Mar 04, 2010 10:38 pm

bytespiller wrote:Koki, naredbu ELIF si nekako površno objasnio. Valjalo je spomenuti da se ELIF izvršava samo ukoliko prethodni IF ili ELIF u indentu nije bio ispunjen.
Ups :oops:

Dobro da si ti sad i to objasnio, ispravljeno u clanku :tup: ... A jednostavno zaboravim da to nekome tko je novi nije toliko ocito...
a.k.a. Koki

User avatar
Denis
Sajentist on djuti!
Posts: 2618
Joined: Tue Aug 26, 2008 9:35 pm
Smallest prime number bigger than 20: 23

Re: [CLANAK 2.] - Python 2: Kontrola toka programa

Post by Denis » Thu Mar 04, 2010 10:41 pm


Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest