Cu for loop (buclă for), putem repeta o bucată de cod. Să ne uităm la un exemplu:
one_to_ten = range(1, 11)
for count in one_to_ten:
print(count)
Ieșirea acestui cod arată după cum urmează:
1 2 3 4 5 6 7 8 9 10
Ieșirea pare foarte familiară, dar codul programului arată diferit. Prima linie folosește funcția range. Funcția range folosește două argumente astfel range(start, finish). start este primul număr care este produs. finish este cu unul mai mare decât ultimul număr. Rețineți că acest program ar fi putut fi realizat într-un mod mai scurt:
for count in range(1, 11):
print(count)
Funcția rangereturnează un iterabil. Aceasta poate fi convertită într-o listă cu funcția list care va fi atunci numărul dominant. Iată câteva exemple pentru a arăta ce se întâmplă cu comanda range:
>>> range(1, 10) range(1, 10) >>> list(range(1, 10)) [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> list(range(-32, -20)) [-32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, -21] >>> list(range(5,21)) [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] >>> list(range(5)) [0, 1, 2, 3, 4] >>> list(range(21, 5)) []
Următoarea linie for count in one_to_ten: folosește structura de control for. O structură de control for arată ca .
for variable in list:list este parcursă începând cu primul element al listei și mergând până la ultimul. Pe măsură ce for trece prin fiecare element dintr-o listă, pune pe fiecare în variable. Acest lucru permite ca variable să fie utilizat în fiecare timp succesiv prin care trece bucla for. Iată un alt exemplu (nu trebuie să tastați acest lucru) pentru a demonstra:
demolist = ['life', 42, 'the universe', 6, 'and', 7, 'everything']
for item in demolist:
print("The current item is:",item)
Ieșirea este:
The current item is: life The current item is: 42 The current item is: the universe The current item is: 6 The current item is: and The current item is: 7 The current item is: everything
Observați cum bucla for trece și setează itemul la fiecare element din listă. Deci, pentru ce este bun for? Prima utilizare este să parcurgeți toate elementele unei liste și să faceți ceva cu fiecare dintre ele. Iată o modalitate rapidă de a adăuga toate elementele:
list = [2, 4, 6, 8]
sum = 0
for num in list:
sum = sum + num
print("The sum is:", sum)
cu ieșirea fiind pur și simplu:
The sum is: 20
Sau puteți scrie un program pentru a afla dacă există duplicate într-o listă, așa cum face acest program:
list = [4, 5, 7, 8, 9, 1, 0, 7, 10]
list.sort()
prev = None
for item in list:
if prev == item:
print("Duplicate of", prev, "found")
prev = item
și la o bună verificare:
Duplicate of 7 found
Bine, deci cum funcționează? Iată o versiune specială de depanare pentru a vă ajuta să înțelegeți (nu trebuie să introduceți aceasta):
l = [4, 5, 7, 8, 9, 1, 0, 7, 10]
print("l = [4, 5, 7, 8, 9, 1, 0, 7, 10]", "\t\tl:", l)
l.sort()
print("l.sort()", "\t\tl:", l)
prev = l[0]
print("prev = l[0]", "\t\tprev:", prev)
del l[0]
print("del l[0]", "\t\tl:", l)
for item in l:
if prev == item:
print("Duplicate of", prev, "found")
print("if prev == item:", "\t\tprev:", prev, "\titem:", item)
prev = item
print("prev = item", "\t\tprev:", prev, "\titem:", item)
cu ieșirea fiind:
l = [4, 5, 7, 8, 9, 1, 0, 7, 10] l: [4, 5, 7, 8, 9, 1, 0, 7, 10] l.sort() l: [0, 1, 4, 5, 7, 7, 8, 9, 10] prev = l[0] prev: 0 del l[0] l: [1, 4, 5, 7, 7, 8, 9, 10] if prev == item: prev: 0 item: 1 prev = item prev: 1 item: 1 if prev == item: prev: 1 item: 4 prev = item prev: 4 item: 4 if prev == item: prev: 4 item: 5 prev = item prev: 5 item: 5 if prev == item: prev: 5 item: 7 prev = item prev: 7 item: 7 Duplicate of 7 found if prev == item: prev: 7 item: 7 prev = item prev: 7 item: 7 if prev == item: prev: 7 item: 8 prev = item prev: 8 item: 8 if prev == item: prev: 8 item: 9 prev = item prev: 9 item: 9 if prev == item: prev: 9 item: 10 prev = item prev: 10 item: 10
Motivul pentru care am pus atât de multe declarații print în cod a fost ca să puteți vedea ce se întâmplă în fiecare linie. (Apropo, dacă nu vă puteți da seama de ce nu funcționează un program, încercați să introduceți o mulțime de declarații print în locuri unde doriți să știți ce se întâmplă.) În primul rând, programul începe cu o listă veche plictisitoare. Apoi programul sortează lista. Acest lucru este astfel încât orice duplicat să fie pus unul lângă celălalt. Programul inițializează apoi o variabilă a prevanterioară. În continuare, primul element al listei este șters, astfel încât primul element să nu fie considerat greșit un duplicat. Urmează o buclă
for. Fiecare item din listă este verificat pentru a vedea dacă este același cu cel precedent. Dacă este un duplicat, a fost găsit. Valoarea lui prev este apoi modificată, astfel încât data viitoare când bucla for trece prin prev să fie elementul anterior celui curent. Destul de sigur, s-a găsit că 7 este un duplicat. (Observați cum se folosește \t pentru a tipări o filă.)
Cealaltă modalitate de a utiliza buclele for este să faceți ceva de un anumit număr de ori. Iată un cod pentru a tipări primele 9 numere din seria Fibonacci:
a = 1
b = 1
for c in range(1, 10):
print(a, end=" ")
n = a + b
a = b
b = n
cu ieșirea surprinzătoare:
1 1 2 3 5 8 13 21 34
Tot ceea ce se poate face cu buclele for (for loop) se poate face și cu buclele while , dar buclele for oferă o modalitate ușoară de a parcurge toate elementele dintr-o listă sau de a face ceva de un anumit număr de ori.
(Include texte din Wikibooks traduse și adaptate de Nicolae Sfetcu)
Descoperă mai multe la MultiMedia
Abonează-te ca să primești ultimele articole prin email.



Lasă un răspuns