Grananje u Pythonu — if, elif, else
U ovoj lekciji naučićeš kako da tvoj program donosi odluke koristeći uslovne iskaze. Grananja omogućavaju da se deo koda izvrši samo ako je određeni uslov tačan — što znači da program više ne radi linearno od vrha ka dnu, već može da bira različite puteve izvršavanja.
Bez grananja, svaki program bi radio isto svaki put kada ga pokreneš, bez obzira na ulazne podatke. Zahvaljujući if, elif i else strukturama, program može da reaguje na različite situacije: da proveri vrednosti promenljivih, uporedi podatke, proveri korisnički unos, odluči da li treba da pokrene određenu funkciju, ili da odabere između više mogućih opcija.
Drugim rečima, grananje omogućava da program donosi odluke, što je osnovni preduslov za izradu inteligentnih, interaktivnih i korисних aplikacija — od jednostavnih kalkulatora, pa sve do složenih sistema.
1. Logički operatori
Pre nego što koristiš grananje, korisno je poznavati logičke operatore koji omogućavaju kombinovanje više uslova:
and— oba uslova moraju biti tačnaor— barem jedan od uslova mora biti tačannot— negacija uslova
Primer:
broj = 8
if broj > 5 and broj < 10:
print("Broj je između 6 i 9")
2. Osnovni if
Najjednostavniji oblik grananja je if. Sintaksa:
broj = 10
if broj > 5:
print("Broj je veći od 5")
U primeru, poruka će se ispisati samo ako je uslov broj > 5 tačan.
3. else — šta ako uslov nije tačan
Ako želiš da program uradi nešto drugo kada uslov nije zadovoljen, koristi else:
broj = 3
if broj > 5:
print("Broj je veći od 5")
else:
print("Broj nije veći od 5")
4. elif — više uslova
Ako imaš više mogućnosti, koristi elif između if i else:
broj = 7
if broj > 10:
print("Broj je veći od 10")
elif broj > 5:
print("Broj je između 6 i 10")
else:
print("Broj je 5 ili manji")
5. Mini zadaci
- Unesi svoj broj i proveri da li je pozitivan, negativan ili nula
- Proveri da li je uneseni broj paran ili neparan
- Napravi jednostavan kviz: ako korisnik unese tačan odgovor, čestitaj, inače napiši "pogrešno"
- Kombinuj logičke operatore u if uslovima (primer:
if a > 0 and b < 10:)
Ova lekcija je osnova za donošenje odluka u programima i koristi se u svim složenijim projektima. Vežbaj zadatke da razumeš kako grananje i logički operatori rade zajedno.
Uvod u grananje sa više uslova (if – elif – else)
U prethodnoj lekciji upoznali smo se sa osnovnim oblikom grananja pomoću if naredbe.
Međutim, u realnim programima veoma često postoji potreba da se proveri više različitih mogućnosti,
od kojih se samo jedna izvršava. Upravo zato Python nudi konstrukciju
if – elif – else, koja predstavlja elegantan način da se program „grana“ u više smerova.
Na Slici 1 prikazano je grananje sa tri moguće putanje: ako je prvi uslov tačan → izvršava se prva grupa naredbi; ako nije, proverava se drugi uslov; ako ni jedan od prethodnih nije ispunjen → izvršava se treća, podrazumevana grana. Ovaj model često srećemo u programima koji biraju jednu od više opcija (meni, kategorije, ocene…).
Primer: grananje sa više elif grana
ocena = int(input("Unesi broj poena: "))
if ocena >= 90:
print("Ocena: 5")
elif ocena >= 80:
print("Ocena: 4")
elif ocena >= 70:
print("Ocena: 3")
elif ocena >= 60:
print("Ocena: 2")
else:
print("Ocena: 1")
U ovom primeru program bira jednu od pet mogućih opcija.
Važno je da shvatiš da se elif grane proveravaju samo ako je prethodni uslov bio netačan,
što je potpuno u skladu sa tokom prikazanim na Slici 1.
Zašto koristiti elif, a ne više if naredbi?
✓ 1. Logička ispravnost:
Sa nizom nezavisnih if naredbi, program bi mogao da izvrši više grana odjednom.
Sa elif i else, Python garantuje da će se izvršiti samo jedna grana.
✓ 2. Performanse:
Kada koristite elif, Python prekida proveravanje onog trenutka kada prvi tačan uslov bude pronađen.
Kod više uzastopnih if naredbi svi uslovi bi se proveravali bez potrebe.
✓ 3. Čitljivost (readability):
if – elif – else jasno pokazuje da se bira upravo jedna od više opcija.
Niz if naredbi može stvoriti zabunu, naročito početnicima.
Kada koristiti if grupe, a kada elif?
- Koristi
elifkada se uslovi međusobno isključuju (može se izvršiti samo jedna grana). - Koristi više
ifnaredbi samo ako želiš da se izvrše više različitih grana nezavisno.
Kada u programu želiš „izbor jedne od više opcija“, uvek koristi strukturu
if – elif – else, jer daje najbolju kombinaciju jasnoće i tačnosti.
Još jedan praktičan primer
Zamislimo da pišemo program za odabir godišnjeg doba na osnovu unetog meseca (kao broj 1‑12). Na primer:
mesec = int(input("Unesi mesec (1‑12): "))
if mesec == 12 or mesec == 1 or mesec == 2:
print("Zima")
elif mesec >= 3 and mesec <= 5:
print("Proleće")
elif mesec >= 6 and mesec <= 8:
print("Leto")
elif mesec >= 9 and mesec <= 11:
print("Jesen")
else:
print("Neispravan mesec")
U zavisnosti od unete vrednosti promenljive mesec, program će ispisati odgovarajuće godišnje doba — demonstracija upotrebe if, elif i else u Pythonu.
Uvod u ugnježdeno grananje
U Pythonu, ponekad je potrebno doneti odluke koje zavise od više uslova istovremeno.
U takvim situacijama koristimo ugnježdeno grananje, što znači da unutar jednog if ili elif bloka možemo imati drugi if ili else blok.
Na primer, možda želimo prvo da proverimo da li je broj pozitivan, a zatim da unutar te provere dodatno proverimo da li je paran ili neparan:
broj = int(input("Unesi broj: "))
if broj > 0:
if broj % 2 == 0:
print("Pozitivan i paran broj")
else:
print("Pozitivan i neparan broj")
else:
print("Broj je nula ili negativan")
Ovaj primer pokazuje kako možemo “ugnjezditi” jedan uslov unutar drugog, omogućavajući programima da donose složenije odluke. U nastavku ćemo videti više praktičnih primera u kojima se ugnježdena grananja kombinuju sa logičkim operatorima, petljama i funkcijama.
Napredni primeri: ugnježđena grananja i kombinacije
Primer 1: Ugnježđena grananja sa logičkim operatorima
broj = int(input("Unesi broj: "))
if broj > 0:
if broj % 2 == 0:
print("Pozitivan i paran broj")
else:
print("Pozitivan i neparan broj")
elif broj < 0:
print("Negativan broj")
else:
print("Broj je nula")
Primer 2: Kombinacija sa logičkim operatorima i različitim tipovima
x = input("Unesi vrednost: ")
if x.isdigit() and int(x) > 10:
print("Broj veći od 10")
elif x.isalpha() and len(x) > 3:
print("Tekst sa više od 3 slova")
else:
print("Ne zadovoljava ni jedan uslov")
Primer 3: If unutar petlji
lista = [3, 7, 12, 5, 8]
for broj in lista:
if broj % 2 == 0:
print(f"{broj} je paran")
else:
print(f"{broj} je neparan")
Primer 4: If unutar funkcije
def proveri_ocenu(ocena):
if ocena >= 90:
return "Odličan"
elif ocena >= 75:
return "Dobar"
elif ocena >= 50:
return "Dovoljan"
else:
return "Nedovoljan"
print(proveri_ocenu(82))
Ovi primeri pokazuju praktičnu primenu ugnježdenih grananja, kombinacija sa logičkim operatorima, testiranja tipova i upotrebu if unutar petlji ili funkcija.
Dodatni mini zadaci / vežbe
Zadatak 4: Provera gojaznosti
Napiši program koji unosi visinu (u metrima) i težinu (u kilogramima), računa BMI i ispisuje kategoriju: pothranjen, normalna težina, gojaznost I, gojaznost II.
visina = float(input("Unesi visinu u metrima: "))
tezina = float(input("Unesi težinu u kilogramima: "))
bmi = tezina / (visina ** 2)
if bmi < 18.5:
print("Pothranjen")
elif 18.5 <= bmi < 25:
print("Normalna težina")
elif 25 <= bmi < 30:
print("Gojaznost I")
else:
print("Gojaznost II")
Zadatak 5: Kombinacija unosa i logičkih operatora
a = int(input("Unesi prvi broj: "))
b = int(input("Unesi drugi broj: "))
c = int(input("Unesi treći broj: "))
if a > 0 and b > 0 and c > 0:
print("Svi brojevi su veći od nule")
else:
print("Neki od brojeva nije veći od nule")
Zadatak 6: Ugnježdeno grananje u igri
kljuc = input("Imaš li ključ? (da/ne): ").lower()
zivot = int(input("Broj života: "))
if kljuc == "da":
if zivot > 0:
print("Možeš otvoriti vrata")
else:
print("Nemate dovoljno života")
else:
print("Nemaš ključ")
Zadatak 7: Provera tipa unetih podataka
vrednost = input("Unesi nešto: ")
if vrednost.isdigit():
broj = int(vrednost)
if broj % 2 == 0:
print("Uneli ste paran broj")
else:
print("Uneli ste neparan broj")
elif vrednost.isalpha():
if len(vrednost) > 3:
print("Uneli ste tekst duži od 3 slova")
else:
print("Uneli ste kratki tekst")
else:
print("Uneli ste kombinovani tip podataka")
Ovi mini zadaci pomažu učenicima da vežbaju kombinovanje različitih tipova uslova, logičkih operatora i ugnježdenih grananja u praktičnim situacijama.
Biranje slučajnog broja u Python-u
U Python-u za generisanje slučajnih brojeva koristi se ugrađeni modul random.
Pre nego što možemo koristiti funkcije iz ovog modula, potrebno ga je importovati:
import random
Najčešće korišćena funkcija za slučajan ceo broj je randint(a, b), koja vraća broj u opsegu a do b, uključujući oba kraja.
Primer: Generisanje slučajnog broja između 1 i 100:
import random
slucajan_broj = random.randint(1, 100)
print("Slučajan broj između 1 i 100 je:", slucajan_broj)
Možete koristiti i druge funkcije iz modula random, kao što su:
random.choice(lista)– bira nasumičan element iz liste.random.uniform(a, b)– vraća slučajan broj sa decimalama izmeđuaib.random.shuffle(lista)– nasumično premešta elemente u listi.
Ovo je korisno za igre, simulacije, testove i sve situacije kada je potreban element slučajnosti.
Zadaci za samostalan rad (teži)
Zadatak 1: Igra pogodaka
Napravite program koji simulira igru pogađanja broja:
- Program nasumično bira broj između 1 i 50.
- Korisnik unosi svoje pokušaje.
- Program koristi
if/elif/elseda javlja da li je uneseni broj veći, manji ili tačan. - Koristite ugnježdena grananja za dodatne poruke (npr. nagrada za pogodak u manje od 5 pokušaja).
Zadatak 2: Meni restorana
Napravite program koji omogućava izbor jela u restoranu:
- Korisnik bira vrstu obroka: predjelo, glavno jelo, desert.
- Za svaki izbor, korisnik unosi dodatne opcije (npr. prilog ili veličinu porcije).
- Program koristi ugnježdena
ifgrananja i logičke operatore za proveru validnosti izbora. - Na kraju ispisuje kompletan “račun” ili potvrdu izbora.
Zadatak 3: Proračun popusta
Napravite program koji obračunava cenu proizvoda sa popustom:
- Korisnik unosi cenu i kategoriju kupca (npr. student, penzioner, regularni).
- Korisnik može uneti kupon za dodatni popust.
- Program koristi kombinaciju
if/elif/elsei logičkih operatora za obračun konačne cene. - Dodajte proveru da li su svi unosi validni (broj, tip kategorije, kupon).
Zadatak 4: Analiza liste brojeva
Napišite program koji unosi listu od 5-10 brojeva i:
- Pronalazi najveći i najmanji broj koristeći ugnježdena
ifgrananja. - Broji koliko brojeva je parno, a koliko neparno.
- Ispisuje rezultate u preglednom formatu.
- Dodajte proveru da li su svi uneti podaci validni brojevi.
Uputstvo: Za svaki zadatak prvo razmislite o logici i uslovima, napravite plan grananja (if/elif/else), i tek potom implementirajte program. Fokusirajte se na kombinovanje ugnježdenih grananja, logičkih operatora i validaciju unosa.
FAQ / Uobičajene greške u grananju
1. Neispravno uvlačenje (IndentationError)
Problem:
broj = 5
if broj > 0:
print("Broj je pozitivan")
Objašnjenje: U Python-u su uvlačenja obavezna da označe blok koda unutar if, elif ili else. Linija print mora biti uvučena:
if broj > 0:
print("Broj je pozitivan")
2. Zaboravljena dvotačka
x = 10
if x > 5
print("Veći od 5")
Objašnjenje: Svaki if, elif ili else mora završavati dvotačkom :. Ispravno:
if x > 5:
print("Veći od 5")
3. else bez prethodnog if
else:
print("Ovo neće raditi")
Objašnjenje: else mora pratiti if ili elif. Samostalno else izaziva grešku.
4. Višestruki if umesto elif
broj = 7
if broj > 5:
print("Veći od 5")
if broj > 0:
print("Veći od 0")
Objašnjenje: Kada se koriste odvojeni if blokovi, oba uslova se proveravaju nezavisno. Ako je cilj da se proveri više alternativa, koristi se elif:
if broj > 5:
print("Veći od 5")
elif broj > 0:
print("Veći od 0")
else:
print("Nije veći od 0")
Ovaj FAQ pomaže učenicima da prepoznaju uobičajene greške i razumeju zašto određeni kod ne funkcioniše u Python-u.
Mini Python igrica — Popuni kod (Grananje)
Vežbaj if, elif i else popunjavanjem praznih mesta. Svaka igrica proverava tvoje rešenje.
Igrica 1: Provera da li je broj pozitivan
Popuni uslov tako da program proverava da li je broj veći od 0:
broj = 5
if ________:
print("Broj je pozitivan")
else:
print("Broj nije pozitivan")
Igrica 2: Provera temperature
Dopuni kod tako da elif proverava temperaturu između 0 i 20:
t = 12
if t < 0:
print("Ispod nule")
elif __________:
print("Hladno")
else:
print("Toplije vreme")
Igrica 3: Školska ocena
Dopuni else deo — treba samo da piše else::
ocena = 5
if ocena == 5:
print("Odličan")
elif ocena == 4:
print("Vrlo dobar")
______:
print("Ostale ocene")
Skriveni mini kviz — Grananje u Python-u
Klikni da proveriš svoje znanje o grananjima i logičkim operatorima u Python-u!
Otvori kviz
Mini kviz: Da li si savladao lekciju?
1. Koji operator se koristi za proveru jednakosti u if uslovu?
2. Šta će biti rezultat sledećeg koda?
broj = 7
if broj > 5:
print("Veći od 5")
else:
print("Manji ili jednak 5")
3. Koja linija ispravno kombinuje if i elif?
4. Koji logički operator spaja dva uslova tako da oba moraju biti istinita?
5. Šta radi sledeći kod?
x = 10
if x % 2 == 0:
print("Paran")
else:
print("Neparan")
6. Koja struktura se koristi za više alternativa nakon prvog if?
Skriveni mini kviz — Pronađi grešku u grananju
Klikni da proveriš da li možeš da prepoznaš uobičajene greške u if/elif/else strukturama!
Otvori kviz
Mini kviz: Pronađi grešku
1. Pogledaj kod. Koja je greška?
broj = 5
if broj > 0:
print("Broj je pozitivan")
2. Pogledaj kod. Koja je greška?
x = 10
if x > 5
print("Veći od 5")
3. Pogledaj kod. Koja je greška?
else:
print("Ovo neće raditi")
4. Pogledaj kod. Koja je greška?
broj = 7
if broj > 5:
print("Veći od 5")
if broj > 0:
print("Veći od 0")

