Python


Si opravil?  (zanke)

Stavek "if" je kar omejena oblika krmiljenja programa. Python še vedno izvaja program tako, da se po njem premika naprej, linearno. Včasih pa si želimo, da bi se nekateri stavki večkrat ponovili. Zato imamo zanke  "while". Da bi dobili občutek za zanke while, uporabimo Python interaktivno Natipkajmo naslednjo zanko (in ne pozabimo na zamike):

	x = 0
while x < 10:
print x
x = x + 1

Stavek while je podoben stavku if  v tem, da pričakuje logično vrednost, kateri sledi dvopičje. V našem primeru je logična vrednost rezultat preverjanja, če je x manjši od 10. Dokler je x manjši od 10, bo Python izvajal naslednji blok stavkov  (z izpisom x in njegovim povečevanjem). Števne zanke so v programiranju kar pogoste. Druga zelo pogosta zanka so interakcije, ko ponavljamo neko akcijo, dokler uporabnik to hoče:

	opravljeno = "ne"
while opravljeno != "da":
print "Si opravil?"
opravljeno = raw_input()
if (opravljeno != "ne") and (opravljeno != "da"):
print "napisi prosim da ali ne."

Uvedli smo operator  "!=" , ki pomeni  "ni enako". Zato se bo ta zanka ponavljala toliko časa, dokler bo vrednost  "opravljeno" različna od  "da". Lahko pa bi ta pogoj izrazili z naslednjo obliko

	while not opravljeno == "da":
kar bi povzročilo preverjanje, če je  "opravljeno" enako "da" in bi vrnilo invertirano  logično vrednost rezultata. Da bi to bilo bolj jasno, lahko zgornjo vrstico zapišemo tako

	while not (opravljeno == "da"):

kar je jasno tako Pythonu kot programerjem. Oklepaji so koristen pripomoček za določitev, kateri deli izraza sodijo skupaj. Uporabljamo jih v vrstici

	if (opravljeno != "ne") and (opravljeno != "da"):

ker je to bolj jasno kot pa

	if opravljeno != "ne" and opravljeno != "da":

Oklepaji postanejo še posebej pomembni pri zamotanih izrazih, kjer postaja združevanje operatorjev in njihovih izrazov nepregledno.

Preden zapustimo zanke, omenimo še neskončno zanko:

	while 1:
print "Nikdar se ne bom ustavil!"

Običajno je to programerska napaka (hrošč, bug) Ko se računalniki "zaklenejo" oziroma "obesijo", je to pogosto zaradi neskončnih zank v slabo sestavljenih programih.

Včasih pa želimo napisati nekaj, kar izgleda kot neskončna zanka, pa v resnici to ni. Python nam nudi možnost "predhodnega" izstopa iz zanke z uporabo stavka "break" , kot v naslednjem primeru

	while 1:
print "Si opravil?"
opravljeno = raw_input()
if opravljeno == "da":
break
print "Dobro, opravil si!"

Ta program bi krožil v zanki večno, razen če ne vtipkamo "da", kar povzroči, da bo vrednost "opravljeno" enaka "da", kar povzroči, da se izvede stavek za stavkom "if", to pa je v našem primeru "break". Po stavku "break" nadaljuje Python  izvajanje stavka

	print "Dobro, opravil si!"