Zanka for

Zanka for

programiranje s for zanko

Avtor: Sevludin Halilović

Težavnost: srednje težka

Predvideni čas: 10-20 min

Učni cilji: Učenec zna uporabiti zanko for za reševanje nalog

Kaj je zanka for?

Je zanka, ki večkrat izvede neko zaporedje stavkov. Po vsakem krogu spremenljivka zavzame naslednjo vrednost iz seznama. Zanka se ponavlja tolikokrat, dokler spremenljivka ne zavzame vseh vrednosti. Ko zmanjka elementov v seznamu, se zanka zaključi.

(zanka_for.GIF)
Slika 1: Zanka for

Primerjava z zanko while

Vse, kar naredimo z zanko for, lahko naredimo tudi z zanko while, a z zanko for , je delo s seznami veliko lažje.

(zanka while.PNG)
Slika 2: Zanka while

Sintaksa

Zanka for na splošno zgleda takole:

    for spremenljivka in interval:
        stavek-1
        stavek-2
        ...
        statement-N

Spremenljivke ni potrebno prej deklarirati, kot je to nujno potrebno pri zanki while.

S tem, ko jo vstavimo v zanko for jo že deklariramo. Njena začetna vrednost je določena s prvo številko intervala ali s prvim znakom niza oz. prvim elementom seznama.

Uporaba - Primer 1

Zanko for uporabljamo, ko hočemo:

  • neke ukaze ponoviti večkrat,
  • se "sprehoditi" preko nekega niza oz. seznama,
  • se "sprehoditi" preko številskega intervala (lahko tudi s poljubnim skokom).

Primer 1

Želimo izpisovati eno po eno črko neke dane besede. Zanko for uporabimo, da se s spremenljivko "znak" sprehodimo preko celotne besede Python in izpišemo črko, pri kateri je trenutno spremenljivka "znak".

    for znak in 'Python':
        print ('Trenutni znak je : ' , znak)

Ko program zaženemo se izpise:

    Trenutni znak je :  P
    Trenutni znak je :  y
    Trenutni znak je :  t
    Trenutni znak je :  h
    Trenutni znak je :  o
    Trenutni znak je :  n

Kaj se je zgodilo?

V zanki for smo ustvarili spremenljivko z imenom znak . Ukazali smo ji, da se naj premika po besedi Python od začetka do konca in izpiše (ukaz print ) črko pri kateri se trenutno nahaja.

Začela je pri P , jo izpisala in se premaknila na naslednjo y , jo izpisala ... in tako šla do konca besede Python

Primerjava z zanko while

Programček s prejšnje strani se z zanko while napiše takole:

    niz = 'Python'
    znak = 0
    while znak < (len(niz)):
        print ('Trenutni znak je ' + niz[znak])
        znak = znak + 1

len(niz) je dolžina niza oz. število znakov, ki sestavljajo niz.

Ko program zaženemo dobimo enak izpis, kot pri zanki for:

    Trenutni znak je :  P
    Trenutni znak je :  y
    Trenutni znak je :  t
    Trenutni znak je :  h
    Trenutni znak je :  o
    Trenutni znak je :  n

V spodnji tabeli je vidna razlika (oz. podobnost) med zankama for in while:

Zanka forZanka while
for znak in 'Python':
    print ('Trenutni znak je : ' , znak) 
niz = 'Python'
znak = 0
while znak < (len(niz)):
    print ('Trenutni znak je ' + niz[znak])
    znak = znak + 1
Tabela 1: Primerjava zank for in while

Gnezdenje for zank

Zanke for lahko tudi "gnezdimo" oziroma vstavimo eno znotraj druge.

To bomo prikazali na spodnjem primeru:

Primer 2

Želimo narediti programček, ki bo izpisal tablico množenja do 10. Izpisati mora račun in rezultat (produkt). Izpis naj bo takšen

    1 * 1 = 1
    1 * 2 = 2
    1 * 3 = 3
    ...
    1 * 9 = 9
    1 * 10 = 10
    2 * 1 = 2
    2 * 2 = 4
    2 * 3 = 6
    ...

Namig

Potrebujemo 2 spremenljivki, ki bosta tekli od števila 1 do 10.

Ko bo prva zasedla vrednost 1, bo druga pretekla vse od 1 do 10. Nato se prva "prestavi" naprej po intervalu do druge vrednosti (ki je 2) in druga spet preteče vse od 1 do 10. In tako vse dokler obe ne pretečeta vseh števil od 1 do 10.

Za to potrebujemo RANGE. To je interval od kod do kod naj preteče spremenljivka. Paziti je treba, da se v range vpiše (1,11), ker spremenljivka gre do zadnje vrednosti, a je ne zasede. Na ta način poskrbimo, da gre spremenljivka res od 1 do vključno 10.

Rešitev primera 2

    for a in range(1,11):
        for b in range (1,11):
            print (str(a) + ' * ' + str(b) + ' = '+ str (a*b))

Ko spremenljivka a zavzame vrednost 1, se začnejo izvajati stavki znotraj prve zanke for.

Ko smo vstopili v zanko for vidimo, da je znotraj zanke je še ena zanka for s premenljivko b, ki bo zavzemala vrednosti med 1 in 10.

Ko spremenljivka b zavzame prvo vrednost (število 1) se začnejo izvajati stavki v tej (notranji) zanki. In sicer izpis 1 * 1 = 1

Spremenljivka b se premakne naprej in zavzame drugo vrednost (2).

Spet izvedejo stavki znotraj zanke: izpis 1 * 2 = 2 . In tako naprej.

To se ponavlja vse dokler b ne preteče vseh števil med 1 in 11. Nato se zanka zaključi.

Zato se spremenljivka a premakne naprej na naslednjo vrednost (2).

Vstopimo v zanko in se ves postopek z drugo zanko ponovi še enkrat.

Tako je potrebno spremenljivko b 10-krat "sprehoditi" od 1 do 10, spremenljivko a pa le enkrat.

Ko obe spremenljivki pretečeta dana intervala, se program konča.

Vprašanje 1

Katero zanko lahko uporabimo namesto zanke for? Odgovor:

Preveri

Odgovor je pravilen!

Naprej

Odgovor je napačen. Poskusi še enkrat.

Ponovno

Vprašanje 2

Ali lahko v zanko for vstavimo še eno zanko for?

NE
DA

Pravilno

Res je. Lahko jih gnezdimo eno znotraj druge - tudi večkrat, ne le enkrat.

Naprej

Napačno

Odgovor ni pravilen. Lahko jih gnezdimo - tudi večkrat.

Naprej

Vprašanje 3

Kaj dobimo kot rezultat, ko se izvedejo spodnji stavki? Izberi en možen odgovor.

niz = input('Vnesite poljubno besedilo (same male črke): ')
novi = ''
for i in range (0, len(niz)):
    if niz[i] != 'a' and niz[i] != 'e' and niz[i] != 'i' and niz[i] != 'o' and niz[i] != 'u':
        novi = novi + niz[i]
print(novi)

Preveri

Odgovor je pravilen.

Naprej

Odgovor ni pravilen.

Poskusite znova

0%
0%