Zanke
Avtor slike: Teja Rutar
Če bi želeli v terminal 5x izpisati določeno spremenljivko, bi to sedaj to naredili takole:
niz = "Živijo"
print(niz)
print(niz)
print(niz)
print(niz)
print(niz)
To sicer deluje, vendar pa je to zelo nepraktično, saj moramo vsakič napisati print(niz). Če bi želeli izpisati 100x, bi morali to napisati 100x. Če želimo, da se nekaj izvede večkrat, uporabimo zanko. Zanka je del kode, ki se izvaja večkrat. V Pythonu poznamo dve vrsti zank: while in for.
For zanka
For zanka se uporablja, ko želimo, da se nekaj izvede točno določeno število krat. Na primer, če želimo izpisati nekaj 5x, uporabimo for zanko.
niz = "Živijo"
for i in range(5):
print(niz)
Kaj se je tukaj zgodilo?
- zanko začnemo s ključno besedo
for - sledi opcijska spremenljivka, ki jo bomo zaenkrat preskočili
- nato sledi ključna beseda
in - nato sledi
range(5), kar pomeni, da se bo zanka izvedla 5x - nato sledi dvopičje, telo zanke pa je zamaknjeno
Zanka se torej izvede 5x, vsakič pa se izpiše vrednost spremenljivke niz.
Sedaj pa podrobneje pogledamo spremenljivko med for in in. Spremenljivka (v zgornjem primeru i) dobi vsako iteracijo zanke novo vrednost. Ta vrednost pa je odvisna od tega, kaj je napisano med in in :.
V zgornjem primeru smo uporabili range(5). Funkcija range(n) za nas naredi seznam števil od 0 do n-1. (Bolj podrobneje naredi generator, vendar je to out-of-scope krožka) V našem primeru je to torej [0, 1, 2, 3, 4]. Sedaj bo spremenljivka i “hodila” po seznamu in dobila vrednost 0, 1, 2, 3 in 4. Vsakič, ko se bo zanka izvedla, bo spremenljivka i dobila novo vrednost.
for i in range(5):
print(i)
# izpiše:
# 0
# 1
# 2
# 3
# 4
Funkcija range lahko podobno kot pri rezanju seznamov in nizov sprejme več argumentov:
- če je argument en sam predstavlja zgornjo mejo (spodnja meja je 0)
- če sta argumenta dva, predstavljata spodnjo in zgornjo mejo
- če so argumenta trije, predstavljata spodnjo in zgornjo mejo ter korak
Spodnja meja je inclusive, zgornja meja pa exclusive. To pomeni, da je spodnja meja vključena v seznam, zgornja pa ne.
Poskušajmo izpisati vsa soda števila med 10 in vključno 20
for i in range(10, 21, 2):
print(i)
Pri opisu funkcije range smo omenili, da ta funkcija za nas naredi seznam. Seveda pa lahko v for zanko podamo tudi svoj seznam.
drzave = ["Slovenija", "Hrvaška", "Avstrija", "Italija"]
for drzava in drzave:
print(drzava)
While zanka
While zanka se izvaja toliko časa dokler je pogoj resničen.
i = 0
while i < 5:
print(i)
i += 1
Continue in break
Včasih pa želimo zanko prekiniti predčasno. To lahko naredimo z break ali pa preskočimo trenutno iteracijo z continue.
for i in range(10):
if i == 5:
break
print(i)
# izpiše:
# 0
# 1
# 2
# 3
# 4
for i in range(10):
if i == 5:
continue
print(i)
# izpiše:
# 0
# 1
# 2
# 3
# 4
# 6
# 7
# 8
# 9