Buclele For în Python: tot ce trebuie să știți
Publicat: 2022-08-18Acest tutorial vă va învăța totul despre utilizarea buclelor for în Python cu exemple de cod.
În programare, buclele vă ajută să repetați un anumit set de instrucțiuni. Veți folosi buclele for pentru iterații precise când:
- știi că vei lucra cu o secvență cu un număr finit de elemente
- vezi in prealabil numarul de repetari
Acest tutorial vă va învăța totul despre lucrul cu buclele for în Python. Veți începe prin a învăța sintaxa și iterațiile simple folosind o buclă for. Apoi, veți învăța despre procesarea argumentelor liniei de comandă, utilizarea instrucțiunilor de control al buclei și multe altele.
Să începem…
Sintaxa lui Python for Loop

Sintaxa generică pentru utilizarea buclei for în Python este următoarea:
for item in iterable: # do something on item statement_1 statement_2 . . . statement_n
În sintaxa de mai sus:
- itemul este variabila în buclă.
- iterable denotă orice iterabil Python, cum ar fi liste, tupluri și șiruri de caractere.
- statement_1 prin statement_n indică instrucțiunile din corpul buclei.
Notă : Asigurați-vă că adăugați două puncte ( :
) după numele iterabilului și indentați toate instrucțiunile din corpul buclei cu patru spații.
Comun pentru Loop Constructs în Python

Când utilizați o buclă for :
- Puteți accesa elementele direct folosind sintaxa discutată în secțiunea anterioară.
- Puteți utiliza bucla for împreună cu funcțiile încorporate Python, cum ar fi
range()
șienumerate()
.
Le vom acoperi în această secțiune.
Utilizarea pentru Loop pentru a accesa elemente
Pentru a îmbunătăți lizibilitatea, ar trebui să alegeți o variabilă în buclă care să indice ceea ce conține lista. De exemplu, în exemplul de mai jos, nums
este o listă de numere pe care le folosim num
ca variabilă de buclă. Observați cum for num in nums:
este intuitiv și ușor de citit.
nums = [4,5,9,1,3] for num in nums: print(num) # Output 4 5 9 1 3
Adăugând mai multe exemple, puteți utiliza for fruit in fruits:
și for student in students:
atunci când parcurgeți fruits
și, respectiv, lista students
.
Folosind for Loop cu funcția range().
Când doriți să accesați un element din listă prin indexul său, puteți utiliza funcția range()
.
În Python,
range(start, stop, step)
returnează un obiect interval, pe care îl puteți parcurge pentru a obține indicii:start
,start + step
și așa mai departe, până la, dar fără a includestop
.
for i in range(len(nums)): print(nums[i]) # Output 4 5 9 1 3
De asemenea, puteți utiliza funcția range()
pentru a genera o secvență de numere prin care să treceți în buclă. În exemplul de mai jos, setăm parametrul opțional step
la 2. Așadar, obținem numere de la 10 până la 20, dar fără a include, în pași de 2.
for i in range(10,20,2): print(i) # Output 10 12 14 16 18
Folosind bucla for cu funcția enumerate().
Când doriți să parcurgeți un iterabil și să accesați articolele și indicii acestora simultan, puteți utiliza funcția enumerate().
Iată un exemplu.
for idx, num in enumerate(nums): print(f"{idx}:{num}") # Output 0:4 1:5 2:9 3:1 4:3

Cum să citiți elementele din liste folosind for Loop în Python
Pentru a parcurge listele Python folosind bucla for, puteți utiliza sintaxa generică din secțiunea anterioară.
În exemplul de mai jos, nums
este iterabil, iar num este variabila de buclă.
nums = [4,5,9,1,3] for num in nums: print(f"{num} times 3 is {num*3}") # action on each num # Output 4 times 3 is 12 5 times 3 is 15 9 times 3 is 27 1 times 3 is 3 3 times 3 is 9
Cum să faci bucla prin șiruri folosind for Loop în Python
Șirurile Python sunt iterabile și puteți efectua bucle, indexare, tăiere și multe altele.
Notă : Python nu are un tip de date de caractere încorporat. Deci, puteți trata un caracter ca un șir de lungime unul.
my_string = "Code" for char in my_string: print(char) # Output C o d e
Cum să faci bucla prin matrice folosind for Loop în Python

Puteți parcurge matrice folosind bucle și niște bucle.
În fragmentul de cod de mai jos, array1 este o listă imbricată care conține liste mai mici ca elemente. Deci, trecerea în buclă prin array1 oferă fiecare rând, așa cum se arată mai jos.
array1 = [[2,3],[7,8]] for row in array1: print(row) # Output [2, 3] [7, 8]
Pentru a accesa elemente individuale din fiecare rând, puteți utiliza o altă buclă for
.
array1 = [[2,3],[7,8]] for row in array1: for elt in row: print(elt)
În celula de cod de mai sus:
- Bucla exterioară pentru vă ajută să indexați în rânduri.
- Bucla interioară vă permite să accesați elementele din fiecare rând.
Iată rezultatul corespunzător.
Output 2 3 7 8
Cum să citiți argumentele liniei de comandă folosind for Loop

În calitate de dezvoltator, ar trebui să vă simțiți confortabil să rulați scripturi Python din linia de comandă și să utilizați argumente din linia de comandă pentru a interacționa cu scriptul dvs.
Puteți folosi modulele încorporate ale lui Python, cum ar fi sys și argparse, pentru a analiza și a citi argumentele din linia de comandă.
În această secțiune, vom vedea cum să folosim modulul sys
și să folosim o buclă for
- pentru a parcurge lista de argumente ale liniei de comandă.
În modulul sys, sys.argv
este lista de argumente de linie de comandă pe care le transmiteți. Deci puteți trece prin sys.argv
exact așa cum ați face bucla prin orice listă Python.
# main.py import sys for arg in sys.argv: print(arg)
Acum puteți rula programul din linia de comandă, așa cum se arată mai jos.
$ python main.py Hello Python3 main.py Hello Python3
În mod implicit, numele modulului este primul argument și se află la indexul zero în sys.argv
.
Dacă doriți să accesați indici și argumentele corespunzătoare, puteți utiliza funcția range()
.
# main.py import sys for i in range(len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")
️ Apoi, rulați din nou main.py.
$ python main.py Hello Python3 arg0 is main.py arg1 is Hello arg2 is Python3
Să presupunem că doriți să analizați și să procesați alte argumente decât numele modulului. Puteți seta valoarea de pornire la 1, ca în celula de cod de mai jos.

# main.py import sys for i in range(1,len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")
$ python main.py Hello Python3 arg1 is Hello arg2 is Python3

Punând totul împreună, fișierul main.py conține următorul cod.
# main.py import sys print("\nPrinting all command-line arguments...") for arg in sys.argv: print(arg) print("\nPrinting all command-line arguments with index...") for i in range(len(sys.argv)): print(f"arg{i} is {sys.argv[i]}") print("\nPrinting command-line arguments except arg0: module_name...") for i in range(1,len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")
Aici este rezultatul când rulați modulul.
$ python main.py Hello Python3 Printing all command-line arguments... main.py Hello Python3 Printing all command-line arguments with index... arg0 is main.py arg1 is Hello arg2 is Python3 Printing command-line arguments except arg0: module_name... arg1 is Hello arg2 is Python3
Cum se utilizează instrucțiunea break Inside for Loop

Ca și alte limbaje de programare, Python acceptă și utilizarea instrucțiunilor de control al buclei break
and continue
. Aceste instrucțiuni pot ajuta la modificarea fluxului de control în bucle, pe baza unor condiții. Să vedem cum să le folosim într-o buclă for.
Întreruperea declarației poate fi folosită pentru a break
dintr-o buclă atunci când o anumită condiție este True
.
Dorim să scriem un program care să facă următoarele:
- Fixați
k
, numărul de intrări. - Utilizați o buclă
for
a citi intrările utilizatorului - câte o cifră și însumați numerele nenegative (mai mari sau egale cu zero). - Acest proces ar trebui să continue atâta timp cât utilizatorul introduce numere nenegative.
- Când utilizatorul introduce un număr negativ, ieșiți din buclă și imprimați suma.
Iată codul care îndeplinește sarcina de mai sus.
k= 5 sum = 0 for i in range(k): num = int(input("\nEnter a number: ")) if num<0: break # exit loop when num < 0 sum += num print(sum)
Dacă utilizatorul introduce un număr mai mic decât zero, controlul iese din bucla for la prima instrucțiune după buclă.
Enter a number: 2 Enter a number: 3 Enter a number: 5 Enter a number: -1 10
Cum se utilizează instrucțiunea continue Inside for Loop
Declarația continue
poate fi folosită pentru a sări peste anumite iterații în funcție de o anumită condiție.
Să folosim aceleași exemple din secțiunea anterioară.
- Citiți intrarea utilizatorului și calculați suma numerelor nenegative.
- Dacă utilizatorul introduce un număr negativ, săriți peste acea iterație, treceți la următoarea iterație și citiți următorul număr.
k = 5 sum = 0 for i in range(k): num = int(input("\nEnter a number: ")) if num<0: continue sum += num print(sum)
Iată un exemplu de ieșire.
Enter a number: 2 Enter a number: 3 Enter a number: 5 Enter a number: -1 Enter a number: 3 13
Al patrulea număr este -1, care este negativ. Cu toate acestea, de data aceasta bucla for continuă până când ajungem la numărul specificat de intrări și ignoră intrările negative. În esență, returnează suma tuturor numerelor nenegative din cele k numere de intrare.
Puteți întâlni o buclă infinită pentru în Python?

În toate exemplele și cazurile de utilizare pe care le-am discutat până acum, nu ne-am întâlnit niciodată cu problema unei bucle for infinite. Dar putem avea o buclă for infinită în Python?
Luați în considerare următoarea funcție double()
.
def double(x = 1): return x*2
- Când apelați funcția
double()
fără a specifica valoarea luix
, este utilizată valoarea implicită de 1. - Când specificați o valoare pentru
x
în apelul funcției, acea valoare este utilizată.
double() # Returns: 2 double(20) # Returns: 40
În Python, funcția iter() returnează un obiect iterator. Puteți folosi next(iter-obj)
pentru a parcurge secvența și pentru a accesa articolele ulterioare.
– Luați în considerare un obiect apelabil și o valoare, santinelă .
–
iter(callable-object, sentinel)
poate fi folosit pentru a efectua iterație până când valoarea returnată de lacallable-object
este egală cusentinel
.
Vedeți de ce putem avea o buclă for infinită în acest caz?

Ei bine, ai un callable-object
și o valoare sentinel
. Dacă valoarea returnată de la apelabil nu este niciodată egală cu sentinelă, atunci bucla continuă pentru totdeauna!
Să folosim funcția de mai sus ca double
și să setăm valoarea sentinelă la 0.
Notă : Menționați numele funcției double
, nu apelul funcției double()
.
Deoarece valoarea returnată de la funcția double
este întotdeauna 2 și nu este niciodată egală cu 0, avem o buclă infinită!
️ Încercați să rulați următoarea celulă de cod. Este infinit pentru buclă și va trebui să opriți programul.
for _ in iter(double,0): print("Running...")

Python For Loops: Întrebări de practică
#1 . Utilizați bucla for pentru a imprima toate numerele pare din intervalul 0 la 20.
Sugestie : Folosiți funcția range()
cu valoarea step
corectă.
#2 . Imprimați toate numerele pare de la 20 până la 0.
Sugestie : Folosiți valoarea negativă pentru parametrul step
în funcția range()
.
#3 . Creați o matrice NumPy tridimensională.
Sugestie : Folosiți bucla for și buclele for imbricate după cum este necesar pentru a accesa rândurile și intrările individuale din matrice.
Încheierea
Iată un rezumat a ceea ce ați învățat în acest tutorial.
- Sintaxa pentru a utiliza bucla Python for împreună cu funcțiile range() și enumerate() .
- Folosirea buclelor for pentru a parcurge liste, matrice și șiruri de caractere și pentru a citi argumentele din linia de comandă
- Utilizarea instrucțiunilor de control al buclei: break pentru a ieși din buclă și continua instrucțiunea pentru a sări peste anumite iterații - în funcție de condiții - în interiorul buclelor for
- Înțelegerea posibilității buclelor for infinite în Python
Apoi, aflați cum să utilizați metoda split() în Python.