3.2. Kontrola toka izvršavanja

3.2.1. Grananje if-then

Sintaksa je

if <condition>:
    <block 1>
elif <condition>:
    <block 2>
else:
    <block 3>

Treba uočiti dvotočke prije blokova koda koji se uvjetno izvršavanju. Također je važno paziti na konzistentno uvlačenje blokova koda (tamo gdje bi u C-u bile vitičaste zagrade), jer je to jedina vodilja kompajleru da prepozna gdje su granice bloka. (Tradicionalno se uvlači za 4 mjesta. Editor u Sage ćelijama automatski radi to uvlačenje.) Npr:

sage: if 2>3:
....:     print "veći je"
....: elif 2==3:
....:     print "jednak je"
....: else:
....:     print "manji je"
manji je

U uvjetima se mogu koristiti standardni logički operatori and, or, not, ..., a važno je uočiti da se test usporedbe jednakosti radi s dvostrukim znakom jednakosti ==. (Jednostruka jednakost = je rezervirana za operacije pridruživanja poput x=1.) Operatori uspoređivanja su standardni: ==, !=, <, <=, >, >=.

sage: if 2>3 or 2<3:
....:     print "nisu isti"
nisu isti

3.2.2. Petlje

while petlja ima standardni oblik

while <condition>:
    <body>

gdje je condition logički uvjet. Npr.

sage: k = 1
sage: while k < 10:
....:     print k,
....:     k += 1
1 2 3 4 5 6 7 8 9

(Zarez nakon print naredbe sprečava automatski prelazak u novi red.)

For petlja ima specifičnu sintaksu

for x in <iterable>:
    <body>

gdje je <iterable> lista, tuple, skup, rječnik, ... Za prijevremeno iskakanje iz petlje postoji komanda break. Npr. slijedeći algoritam pronalazi prvi cijeli broj čiji rastav sadrži više od pet različitih prostih faktora.

sage: for i in range(1,1e5):
....:     if len(factor(i))>5:
....:         break
sage: print i
30030

Alternativni i nešto elegantniji algoritam bi bio

sage: i = 1
sage: while len(factor(i))<6:
....:     i +=1
sage: print i
30030

Zadatak 1

Isprogramirajte petlju koja će pomnožiti sve brojeve od 1 do 7 (dakle, izračunati će 7!). Riješite zadatak jednom koristeći for petlju, a drugi put while petlju.

Pregled sadržaja

Prijašnja tema

3.1. Liste i drugi spremnici

Slijedeća tema

3.3. Funkcije