Zanka for

Zanka for

Avtor: Anja Vencelj

Najprej nekaj teorije

Zanko for uporabljamo v programu Python v primeru, kadar se hočemo 'sprehoditi' po vseh elementih nekega seznama in preverjati kakšno od lastnosti elementov seznama.

Primer:

Imamo seznam števil:  seznam = [1,2,3,4,5,6]  in nas zanima, katero od teh števil je deljivo s številom 2.

S pomočjo zanke while bi to izgledalo tako:


indeks = 0
while indeks < len(seznam):
    if seznam[indeks]%2 == 0:
        print (str(seznam[indeks])+' je deljivo z 2.')
    indeks = indeks + 1

S pomočjo zanke for, bi to napisali na sledeč način:
for število in seznam:
        if število%2 == 0:
            print (str(število)+' je deljivo z 2.')

Primerjava zanke while in zanke for

Poglejmo primera:

Zanka while:
indeks = 0
while indeks < len(seznam):
    if seznam[indeks]%2 == 0:
        print (str(seznam[indeks])+' je deljivo z 2.')
    indeks = indeks + 1

Zanka for:
for število in seznam:
        if število%2 == 0:
            print (str(število)+' je deljivo z 2.')

Zapisa zanke while in zanke for razlikujeta:

- pri zanki for ni potrebno definirati nobene spremenljivke ('indeks'), katere vrednost v zanki povečujemo.

- pri zanki for program kar sam predvideva, da so vrednosti spremenljivke 'število' kar vsi elementi v seznamu. (Spremelnjivka število teče po vseh elementih seznama).

- pri zanki for je zapis programa precej bolj razumljiv in napisan bolj 'naravno' zato težje prihaja do napak pri pisanju programa.

Naloga 1 za vajo

S pomočjo zanke for in prejšnjega zgleda, poskusi napisati program, s katerim boš seštel vrednosti vseh elementov seznama.

Primer:  seznam = [1,2,3,4,5] 

Program izpiše: Vsota elementov seznama: [1, 2, 3, 4, 5] je 15

Rešitev naloge1

Zanka for in funkcija RANGE

V prejšnjem primeru je zanka for šla čez vse elemente v seznamu. Marsikdaj pa bi radi iz seznama 'potegnili' le določene elemente. Ker v zanki for ni predvideno, da bi vnaprej definirali indeks, si pomagamo s funkcijo range.

Primer uporabe funkcije range

Če bi se radi 'sprehodili' po vseh indeksih elementov nekega seznama ali niza, zapišemo takole:

 for ind in range (len(sez))
 
To pomeni, da indeks teče od 0 do števila, ki je za 1 manjši od dolžine seznama.

 for ind in range (1,3) 

Indeks teče od 1 do 2 (zgornja meja intervala ni več upoštevana).

 for ind in range (1,6,2) 

Indeks teče od 1 do 5 s korakom 2.

Splošno:  for ind in range (i,j,k)  pomeni, da funkcija šteje od števila i do števila k-1, s korakom k.

Primer uporabe funkcije range v zanki

Primer: Iz seznama imen  imena = ['Marko','Bojan','Miha','Jaka','Mirko']  izpiši imena, ki v seznamu zasedajo liha mesta.

Naloga 2 za vajo

Primer:

Prve tri elemente seznama  sez = [1,2,3,4,5]  pomnoži z 2, ostalih pa ne spreminjaj.

Rešitev naloge 2

Naloga 3 za vajo

LUKNJASTA

Napiši funkcijo, ki dobi za parameter neko število in nato izpiše, koliko je lukenj v tem številu. Z luknjami so mišljene luknje v vsaki posamezni števki: števke 0, 4, 6 in 9 imajo po eno luknjo, števka 8 ima dve, preostale števke pa nimajo lukenj.

Primer:

 Vnesi naravno število: 5423087

Število 5423087 ima 4 lukenj. 

Rešitev naloge 3

Vprašanje 1

Ali lahko zanko while vedno zamenjam z zanko for?

DA
NE

Pravilno

Res je. Zanke while ne moremo vedno zamenjati z zanko for. Primer:

 while x > 1:
          x = x/2  

Naprej

Napačno

Ni res. Zanke while ne moremo vedno zamenjati z zanko for. Primer:

 while x > 1:
          x = x/2  

Nazaj

Vprašanje 2

Kakšna je vrednost spremeljivke x, ko se izvede naslednja zanka?

 for x in range (0,5):
    x = x-1
print(x)
 

Preveri

Pravilno

Res je. Na koncu se izpiše število 3, saj je bilo zadnje po vrsti v zanki število 4, kateremu smo mu nato odšteli 1. Naprej

Napačno

Ni pravilno. Pravilen odgovor je 3.

Nazaj

Vprašanje 3

Imamo seznam z elementi:  seznam =['Anja','Hana','Nina','Barbara','Karin','Tinkara']
 
Kaj se izpiše, če zapišemo naslednjo zanko:

 for i in range (1,4):
    print (seznam[i]) 

Anja Hana Nina Barbara
Anja Hana Nina
Hana Nina Barbara

Pravilno

Čestitam. Res se izpišejo imena Hana, Nina, Barbara, ker smo se z zanko sprehodili po indeksih 1,2 in 3. Naprej

Napačno

Napačno. Z zanko smo se prehodili po indeksih 1, 2 in 3. Prvi element seznama ima indeks 0, zato ga ne upoštevamo. Prav tako ne upoštevamo elementa z indeksom 4, ker range (1,4) štele samo od 1 do 3.

Nazaj

0%
0%