Lekcija 7: Petlje – Ponavljanje radnji (for i while)
Lekcija 7: Petlje – Ponavljanje radnji (for i while)
Čestitam na dolasku do Lekcije 7! Do sada ste naučili kako da vaš program donosi odluke koristeći uslovne strukture. Ali šta ako želite da program ponovi istu radnju mnogo puta? Na primer, da ispiše brojeve od 1 do 100, ili da obradi listu od hiljadu korisnika? Ručno pisanje koda za svaku ponavljajuću radnju bi bilo naporno i neefikasno.
Upravo za to služe petlje! Petlje su kontrolne strukture koje omogućavaju da se određeni blok koda izvršava više puta, sve dok je određeni uslov ispunjen ili dok se ne prođu svi elementi neke kolekcije. One su temelj za efikasno programiranje.
U Pythonu imamo dve glavne vrste petlji: for petlju i while petlju.
1. for petlja: Iteracija kroz kolekcije
for petlja se koristi za iteraciju (ponavljanje) kroz elemente neke sekvence (kao što su stringovi, liste, tuple-ovi, ili niz brojeva). Ona se izvršava za svaki element u toj sekvenci.
Struktura for petlje:
for element in sekvenca:
# Kod koji se izvršava za svaki ‘element’ u ‘sekvenci’
# Opet, obratite pažnju na uvlačenje (indentaciju)!
Korišćenje range() funkcije sa for petljom
Funkcija range() je izuzetno korisna kada želite da ponovite nešto određeni broj puta ili da generišete niz brojeva.
- range(kraj): Generiše brojeve od 0 do kraj-1.
- range(pocetak, kraj): Generiše brojeve od pocetak do kraj-1.
- range(pocetak, kraj, korak): Generiše brojeve od pocetak do kraj-1, sa definisanim korakom.
Primeri sa for petljom:
# Primer 1: Ispisivanje brojeva od 0 do 4
print(„Brojevi od 0 do 4:“)
for i in range(5): # i će biti 0, 1, 2, 3, 4
print(i)
# Primer 2: Ispisivanje brojeva od 1 do 5
print(„\nBrojevi od 1 do 5:“)
for broj in range(1, 6): # broj će biti 1, 2, 3, 4, 5
print(broj)
# Primer 3: Ispisivanje parnih brojeva od 0 do 10
print(„\nParni brojevi od 0 do 10:“)
for parni_broj in range(0, 11, 2): # počinje od 0, ide do 10, korak je 2
print(parni_broj)
# Primer 4: Iteracija kroz string (tekst)
print(„\nSlova u reči ‘Python’:“)
rec = „Python“
for slovo in rec:
print(slovo)
# Primer 5: Iteracija kroz listu imena (naučićemo više o listama u Lekciji 8)
print(„\nImena korisnika:“)
imena = [„Ana“, „Bojan“, „Vesna“, „Goran“]
for ime in imena:
print(f“Zdravo, {ime}!“)
2. while petlja: Ponavljanje dok je uslov istinit
while petlja se koristi kada želite da se blok koda ponavlja sve dok je određeni uslov True (tačan). Ova petlja je korisna kada ne znate unapred koliko puta treba da se ponovi određena radnja.
Struktura while petlje:
while uslov:
# Kod koji se izvršava SVE DOK je ‘uslov’ TAČAN
# Ne zaboravite da unutar petlje promenite nešto što će na kraju učiniti uslov NETAČNIM,
# inače ćete dobiti BESKONAČNU PETLJU!
Primeri sa while petljom:
# Primer 1: Odbrojavanje od 5 do 1
print(„Odbrojavanje:“)
brojac = 5
while brojac > 0:
print(brojac)
brojac = brojac – 1 # Smanjujemo brojač, da se petlja ne vrti beskonačno
print(„Kreni!“)
# Primer 2: Traženje unosa dok korisnik ne unese „tajna“
lozinka = „“
while lozinka != „tajna“:
lozinka = input(„Unesite lozinku: „)
if lozinka != „tajna“:
print(„Pogrešna lozinka. Pokušajte ponovo.“)
print(„Lozinka prihvaćena! Dobrodošli.“)
PAŽNJA: Ako uslov while petlje nikada ne postane False, dobićete beskonačnu petlju (infinite loop), što će dovesti do toga da se program ne zaustavlja. Ako se to dogodi, pritisnite Ctrl+C u terminalu da zaustavite program.
3. Kontrolne izjave za petlje: break i continue
Unutar petlji, ponekad želimo da promenimo tok izvršavanja. Za to koristimo break i continue.
- break: Potpuno prekida izvršavanje petlje i program nastavlja sa kodom nakon petlje.
- continue: Prekida samo trenutnu iteraciju petlje i prelazi na sledeću iteraciju.
Primeri sa break i continue:
# Primer 1: Korišćenje ‘break’
print(„\nPrekidanje petlje sa ‘break’:“)
for i in range(1, 10):
if i == 5:
print(„Pronađen broj 5, prekidam petlju.“)
break # Kada i postane 5, petlja se prekida
print(i)
print(„Petlja je završena.“)
# Primer 2: Korišćenje ‘continue’
print(„\nPreskakanje iteracije sa ‘continue’:“)
for i in range(1, 10):
if i % 2 == 0: # Ako je broj paran
continue # Preskoči ispis i idi na sledeću iteraciju
print(i) # Ispisaće samo neparne brojeve
print(„Petlja je završena.“)
Praktičan primer: Jednostavna igra pogađanja broja
Hajde da sada iskoristimo sve što smo naučili (promenljive, ulaz/izlaz, uslove i petlje) da napravimo malu igru pogađanja broja!
import random # Uvozimo modul ‘random’ za generisanje nasumičnih brojeva
# Generisanje nasumičnog broja između 1 i 10
tajni_broj = random.randint(1, 10)
pogadjaj = 0
broj_pokusaja = 0
print(„Dobrodošli u igru pogađanja broja!“)
print(„Pokušajte da pogodite broj između 1 i 10.“)
# Petlja će se vrteti dok korisnik ne pogodi broj
while pogadjaj != tajni_broj:
try: # Pokušavamo da izbegnemo greške ako korisnik unese nešto što nije broj
pogadjaj_str = input(„Unesite vašu pretpostavku: „)
pogadjaj = int(pogadjaj_str)
broj_pokusaja += 1 # Povećavamo brojač pokušaja
if pogadjaj < tajni_broj:
print(„Pretpostavka je preniska! Pokušajte ponovo.“)
elif pogadjaj > tajni_broj:
print(„Pretpostavka je previsoka! Pokušajte ponovo.“)
except ValueError:
print(„Niste uneli validan broj. Molimo unesite ceo broj.“)
print(f“Čestitamo! Pogodili ste tajni broj ({tajni_broj}) u {broj_pokusaja} pokušaja.“)
print(„Hvala što ste igrali!“)
Zadatak za vežbu: Pokrenite ovu igru u VS Code-u i igrajte je! Pokušajte da razumete kako while petlja radi, kako se koriste uslovi i kako se brojač pokušaja povećava.
Pitanja i odgovori (FAQ)
P: Koja je glavna razlika između for i while petlje?
O: for petlja se obično koristi kada znate koliko puta želite da se ponovi (npr. proći kroz sve elemente liste ili određeni opseg brojeva). while petlja se koristi kada želite da se ponavljanje nastavi dok je određeni uslov tačan, a broj ponavljanja nije unapred poznat.
P: Šta je beskonačna petlja i kako je izbeći?
O: Beskonačna petlja je while petlja čiji uslov nikada ne postane False, pa se ona vrti zauvek. Izbegavate je tako što uvek obezbedite da se unutar petlje nešto promeni (npr. brojač se poveća/smanji), što će na kraju uslov petlje učiniti netačnim.
P: Da li mogu da koristim break i continue u istoj petlji?
O: Tehnički da, ali se generalno ne preporučuje preterano korišćenje obe izjave unutar iste petlje, jer kod može postati manje čitljiv i teži za razumevanje. Cilj je da kod bude jasan.
P: Da li range() funkcija uključuje krajnju vrednost?
O: Ne. range(kraj) ide do kraj-1. Na primer, range(5) generiše brojeve 0, 1, 2, 3, 4.
P: Kako da zaustavim program ako se zaglavi u beskonačnoj petlji?
O: U terminalu gde se program izvršava, pritisnite Ctrl+C (na Windows/Linuxu) ili Cmd+C (na macOS-u).
Relevantni linkovi
- W3Schools – Python Loops (engleski): w3schools.com/python/python_loops.asp
- **Real Python – Python for Loops (engleski): realpython.com/python-for-loop/
- Real Python – Python while Loops (engleski): realpython.com/python-while-loop/
- Zvanična Python dokumentacija – for Statement (engleski): docs.python.org/3/tutorial/controlflow.html#for-statements
- Zvanična Python dokumentacija – while Statement (engleski): docs.python.org/3/reference/compound_stmts.html#while
Čestitamo! Sada vaš program ne samo da može da donosi odluke, već i da ponavlja radnje automatski, što je neverovatno moćna sposobnost u programiranju. U sledećoj lekciji ćemo se fokusirati na kolekcije podataka, počevši od lista i tuple-ova, kako bismo mogli da organizujemo veće skupove informacija.

