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 parseru da prepozna gdje su granice bloka. (Tradicionalno se uvlači za 4 mjesta. Editor u Sage ćelijama automatski radi to uvlačenje.) Npr:
>>> 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: ==, !=, <, <=, >, >=
.
>>> 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.
>>> k = 1
>>> while k < 10:
... print(k, end='')
... k += 1
123456789
Opcionalnim argumentom end
sprečavamo automatski prelazak u novi red.
(Defaultna vrijednost je end=`\n`
što je kontrolni znak za prelazak
u novi red.)
Mnogo Python funkcija ima opcionalne argumente koji se nužno zadaju nakon
obaveznih argumenata. Ako ih ne zadamo, oni imaju svoje defaultne vrijednosti
koje možemo saznati uvidom u dokumentaciju ili definiciju funkcije.
For
petlja ima specifičnu sintaksu
for x in <iterable>:
<body>
gdje je <iterable>
lista, range, 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.
>>> import sympy
>>> for i in range(1,10**5):
... if len(sympy.factorint(i))>5:
... break
>>> print(i)
30030
Alternativni i nešto elegantniji algoritam bi bio
>>> i = 1
>>> while len(sympy.factorint(i))<6:
... i +=1
>>> 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.