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 range
returnează 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 prev
anterioară. Î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)
Lasă un răspuns