Šta ako želimo da se zajedno sa vrednostima u listi, stringu ili rečniku učitavaju i indeksi odnosno redni brojevi tih elemenata u listi. Pajton ima funkciju enumerate koja nam ovo obezbeđuje. Umesto jedne promenljive za upis for petlje imamo dve razdvojene zarezom. U prvoj se učitava trenutni indeks a u drugoj vrednost koja odgovara tom indeksu. Pogledajmo primer koji ilustruje ovu funkciju:
for i,slovo in enumerate("Na Drini cuprija"): print (str(i)+ " "+slovo)
Pogledajmo sada još jedan primer programa koji implementira korišćenje enumerate. Korisnik unosi redom koja su mu najomiljenija jela, a zatim se ta jela ispisuju zajedno sa gradacijom.
jelo = [] while(True): #Beskonacna petlja, prekida se samo ako se pokrene break rec=raw_input("Unesite jelo ili 'kraj liste' za prekid programa") if rec=="kraj liste" : break jelo.append(rec) #dodajemo rec u listu ukoliko nije 'kraj liste' for i,v in enumerate(jelo): """Da bismo dobili zeljeni ispis moramo da dodamo 1 na enumerisane brojevi kao i tacku iza broja da bi bio redni""" print "Tvoj "+str(i+1)+". "+"izbor je " + v
U ovom slučaju beskonačna petlja nam je olakšala implementaciju. Da smo proveravali u uslovu while petlje da li je rec!=“kraj liste“ onda bismo na listu jelo dodali nepotrebno tu reč, pa bi to iziskivalo dodatnu if naredbu. Tada bismo, međutim imali dve iste provere, što je manje efikasno i zbunjujuće.
Na početku ovog odeljka pomenuto je da je način na koji for petlja uzima ključeve iz rečnika nepredvidiv. Međutim sada smo pomoću enumerate funkcije u mogućnosti da za konkretan rečnik „zapamtimo„ redosled kojim for petlja uzima ključeve. Pa je sada redosled, iako još uvek nepredvidiv, izračunljiv.
Jedna ili više petlji mogu da se nalaze ne samo u funkcijama već i u drugim petljama, i ovaj pojam nazivamo ugnježdenim petljama. Pogledajmo odmah jedan primer ugnježdene petlje koja ispisuje pravougaonik ispunjen zvezdicama na izlaz.
for i in range(6): # petlja koja ispisuje redove for j in range(6): # ispisuje zvezdice u jednom redu print ('*'), print ("")# kraj reda, još uvek unutar spoljnje petlje
Pri analiziranju ugnježdenih petlji često je lakše da se krene od unutrašnje petlje. U našem slučaju unutrašnja petlja ispisuje u istom redu 6 zvezdica, dok spoljašnja petlja ispisuje 6 takvih redova. Postoji i elegantnije rešenje sa istim izlazom.
for i in range(6): print '* '*6
Zadatak: Napisati program koji na izlaz ispisuje pravougli trougao sa osnovom od 5 zvezdica, koristeći oba prethodna načina. Za pomoć pogledati dodatak.
Neke od programa nećete moći da pokrenete na našoj konzoli, zato Vam predlažemo da sa zvaničnog sajta www.python.org preuzmete portabilnu verziju. Instalacija je vrlo jednostavna. Mi Vam predažemo da odaberete verziju 3.3.5 koju smo i mi koristili.
Tekstualni editor u kome možete pisati svoje programe se pokreće preko programa koji se zove IDLE i automatski se instalira sa celim paketom. Novi program započinjete klikom na padajući meni "FILE" >> "NEW FILE". Možete ga pokrenuti pritiskom na dugme F5 na tastaturi.
Konzola koja se nalazi na sajtu omogućava rad sa većinom prezentovanog materijala, ali je naglašeno kada je potrebno preći na instaliranu konzolu.