Vòng lặp trong Python

Vòng lặp trong Python

Phan Nhật Chánh

Chánh17 tháng 09, 2020

9 min read
·
views
·
likes

Trong lập trình, bạn thường gặp các công việc được lặp đi lặp lại nhiều lần. Để xử lý công việc lặp đi lặp lại bạn phải nhờ đến các vòng lặp. Ngôn ngữ lặp trình python cũng cung cấp hai vòng lặp đó là vòng lặp for và while.

For loop

Tương tự như những ngôn ngữ lập trình khác, từ khóa for được sử dụng để thực hiện một vòng lặp for nhưng có một số khác biệt về mặc cú pháp. Vòng lặp được sử dụng để lặp đi lặp lại qua một chuỗi (list, tuple, dict, set hoặc một string).

list

Cú pháp
for iterator in lst: code goes here
Cú pháp
for iterator in lst: code goes here
Ví dụ
numbers = [0, 1, 2, 3, 4, 5] for number in numbers: print(number)
Ví dụ
numbers = [0, 1, 2, 3, 4, 5] for number in numbers: print(number)

string

Cú pháp
for iterator in string: code goes here
Cú pháp
for iterator in string: code goes here
Ví dụ
language = 'Python' for letter in language: print(letter)
Ví dụ
language = 'Python' for letter in language: print(letter)

tuple

Cú pháp
for iterator in tpl: code goes here
Cú pháp
for iterator in tpl: code goes here
Ví dụ
numbers = (0,1,2,3,4,5) for number in numbers: print(number)
Ví dụ
numbers = (0,1,2,3,4,5) for number in numbers: print(number)

dictionary

Cú pháp
for iterator in dct: code goes here
Cú pháp
for iterator in dct: code goes here
Ví dụ
person = { 'first_name':'Messi', 'last_name':'Leonel', 'age':250, 'country':'Argentina', 'is_marred':True, 'skills':['JavaScript', 'React', 'Node', 'MongoDB', 'Python'], 'address':{ 'street':'Space street', 'zipcode':'02210' } } for key in person: print(key) for key, value in person.items(): print(key, value) # Bằng cách này, ta nhận được cả khóa và giá trị được in ra
Ví dụ
person = { 'first_name':'Messi', 'last_name':'Leonel', 'age':250, 'country':'Argentina', 'is_marred':True, 'skills':['JavaScript', 'React', 'Node', 'MongoDB', 'Python'], 'address':{ 'street':'Space street', 'zipcode':'02210' } } for key in person: print(key) for key, value in person.items(): print(key, value) # Bằng cách này, ta nhận được cả khóa và giá trị được in ra

set

Cú pháp
for iterator in st: code goes here
Cú pháp
for iterator in st: code goes here
Ví dụ
it_companies = {'Facebook', 'Google', 'Microsoft', 'Apple', 'IBM', 'Oracle', 'Amazon'} for company in it_companies: print(company)
Ví dụ
it_companies = {'Facebook', 'Google', 'Microsoft', 'Apple', 'IBM', 'Oracle', 'Amazon'} for company in it_companies: print(company)

Break, Continue, Next

# Không chứa 5 for i in [x for x in range(10) if x != 5]: print (i) # Không chứa 5 for i in list(range(5)) + list(range(6, 10)): print (i)
# Không chứa 5 for i in [x for x in range(10) if x != 5]: print (i) # Không chứa 5 for i in list(range(5)) + list(range(6, 10)): print (i)
  • Lệnh Break: có tác dụng kết thúc vòng lặp và thực thi tới lệnh ngay sau vòng lặp đó.
Cú pháp
for iterator in sequence: code goes here if condition: break
Cú pháp
for iterator in sequence: code goes here if condition: break
Ví dụ
numbers = (0,1,2,3,4,5) for number in numbers: print(number) if number == 3: break
Ví dụ
numbers = (0,1,2,3,4,5) for number in numbers: print(number) if number == 3: break

Trong ví dụ trên, vòng lặp for sẽ dừng lại khi nó lặp đến lần thứ 3.

Ví dụ
for i in range(6): print(i) if i==2: break
Ví dụ
for i in range(6): print(i) if i==2: break
  • Lệnh Continue: sử dụng lệnh Continue khi muốn bỏ qua một số bước lặp trong quá trình lặp đi lặp lại của vòng lặp.
Cú pháp
for iterator in sequence: code goes here if condition: continue
Cú pháp
for iterator in sequence: code goes here if condition: continue
Ví dụ 1
numbers = (0,1,2,3,4,5) for number in numbers: #print(number) if number == 3: continue print('Số tiếp theo sẽ là ', number + 1) if number != 5 else print("kết thúc vòng lặp") print('bên ngoài vòng lặp')
Ví dụ 1
numbers = (0,1,2,3,4,5) for number in numbers: #print(number) if number == 3: continue print('Số tiếp theo sẽ là ', number + 1) if number != 5 else print("kết thúc vòng lặp") print('bên ngoài vòng lặp')

Trong ví dụ trên, nếu number = 3, lần lập kế tiếp (number = 4) sẽ bị bỏ qua và việc thực hiện vòng lặp tiếp tục nếu còn lại bất kỳ lần lặp nào.

Ví dụ 2
# bỏ qua 5 for i in range(10): if i == 5: continue print(i)
Ví dụ 2
# bỏ qua 5 for i in range(10): if i == 5: continue print(i)
  • Lệnh Next: tương tự như continue làm cho vòng lặp nhảy qua phần còn lại của thân vòng lặp và tự động kiểm tra lại điều kiện của nó trước khi lặp lại vòng mới.
# Sử dụng next (bỏ qua 5) xr = iter(range(10)) for i in xr: print(i) if i == 4: next(xr)
# Sử dụng next (bỏ qua 5) xr = iter(range(10)) for i in xr: print(i) if i == 4: next(xr)

range()

Hàm range()range() được tích hợp sẵn trong Python được sử dụng để tạo một chuỗi các số bắt đầu từ 0 theo mặc định, tăng thêm 1 (theo mặc định) và kết thúc tại một số được chỉ định. Hiểu đơn giản, hàm nhận một số nguyên và trả về một range object (kiểu iterable). Cú pháp range(start, end, step)range(start, end, step) với ba tham số là start, end, step.

Ví dụ 1
lst = list(range(11)) print(lst) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] st = set(range(1, 11)) print(st) # {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} lst = list(range(0,11,2)) print(lst) # [0, 2, 4, 6, 8, 10] st = set(range(0,11,2)) print(st) # {0, 2, 4, 6, 8, 10}
Ví dụ 1
lst = list(range(11)) print(lst) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] st = set(range(1, 11)) print(st) # {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} lst = list(range(0,11,2)) print(lst) # [0, 2, 4, 6, 8, 10] st = set(range(0,11,2)) print(st) # {0, 2, 4, 6, 8, 10}
Ví dụ 2
for number in range(11): print(number) # i ra từ 0 đến 10
Ví dụ 2
for number in range(11): print(number) # i ra từ 0 đến 10
Ví dụ 3
for i in range (5, 11) : print(i); # từ 5 đến 10
Ví dụ 3
for i in range (5, 11) : print(i); # từ 5 đến 10
Ví dụ 4
# Biến i chạy từ 0 đến 2 for i in range (3) : print(i); # từ 0 đến 2 else: print("no left")
Ví dụ 4
# Biến i chạy từ 0 đến 2 for i in range (3) : print(i); # từ 0 đến 2 else: print("no left")

For lồng nhau

Chúng ta có thể viết các vòng lặp bên trong một vòng lặp.

Cú pháp
for x in y: for t in s: print(t)
Cú pháp
for x in y: for t in s: print(t)
Ví dụ
person = { 'first_name': 'Messi', 'last_name': 'Leonel', 'age': 250, 'country': 'Argentina', 'is_marred': True, 'skills': ['JavaScript', 'React', 'Node', 'MongoDB', 'Python'], 'address': { 'street': 'Space street', 'zipcode': '02210' } } for key in person: if key == 'skills': for skill in person['skills']: print(skill)
Ví dụ
person = { 'first_name': 'Messi', 'last_name': 'Leonel', 'age': 250, 'country': 'Argentina', 'is_marred': True, 'skills': ['JavaScript', 'React', 'Node', 'MongoDB', 'Python'], 'address': { 'street': 'Space street', 'zipcode': '02210' } } for key in person: if key == 'skills': for skill in person['skills']: print(skill)

For Else

Nếu chúng ta muốn thực thi một số thông báo khi vòng lặp kết thúc, ta có thể sử dụng sử dụng else

Cú pháp
for iterator in range(start, end, increment): do something else: print('The loop ended')
Cú pháp
for iterator in range(start, end, increment): do something else: print('The loop ended')
Ví dụ
for number in range(11): print(number) # in ra từ 0 đến 10 else: print('Vòng lặp dừng lại ở ', number)
Ví dụ
for number in range(11): print(number) # in ra từ 0 đến 10 else: print('Vòng lặp dừng lại ở ', number)

Pass

Trong python nếu ta không muốn thực thi bất kỳ lệnh hoặc khối lệnh nào (ví dụ như trong vòng lặp), chúng ta có thể sử dụng pass để bỏ qua (hiểu đơn giản pass sẽ giữ chỗ để bạn phát triễn những dòng lệnh trong tương lai).

Ví dụ
for number in range(6): pass
Ví dụ
for number in range(6): pass

While loop

Vòng lặp while thường được sử dụng để thực hiện lặp đi lặp lại một khối câu lệnh cho đến khi một điều kiện được thỏa mãn. Khi điều kiện không được thỏa mãn thì các dòng lệnh sau vòng lặp sẽ được tiếp tục thực hiện.

Cú pháp
while condition: code goes here
Cú pháp
while condition: code goes here
Ví dụ
count = 0 while count < 5: print(count) count = count + 1
Ví dụ
count = 0 while count < 5: print(count) count = count + 1

Trong ví dụ trên, điều kiện trở thành sai khi count = 5. Đó là khi vòng lặp dừng lại. Nếu chúng ta muốn chạy khối lệnh khi điều kiện không còn đúng nữa, chúng ta có thể sử dụng else.

Cú pháp
while condition: code goes here else: code goes here
Cú pháp
while condition: code goes here else: code goes here
Ví dụ
count = 0 while count < 5: print(count) count = count + 1 else: print(count)
Ví dụ
count = 0 while count < 5: print(count) count = count + 1 else: print(count)

Ở ví dụ trên vòng lặp while sẻ thực hiện cho đến khi biến count > 5 thì vòng lặp dừng lại và bắt đầu câu lệnh ở trong else. Kết quả là 5 sẽ được in ra.

Break, Continue

  • Break: sử dụng break khi muốn thoát ra khỏi vòng lặp hoặc dừng lại.
Cú pháp
while condition: code goes here if another_condition: break
Cú pháp
while condition: code goes here if another_condition: break
Ví dụ 1
count = 0 while count < 5: print(count) count = count + 1 if count == 3: break
Ví dụ 1
count = 0 while count < 5: print(count) count = count + 1 if count == 3: break
Ví dụ 2
i = 1 while i < 6: print(i) if i==3: break i += 1
Ví dụ 2
i = 1 while i < 6: print(i) if i==3: break i += 1
  • Continue: Với câu lệnh continue, chúng ta có thể dừng lần lặp hiện tại và tiếp tục với phần tiếp theo:
Cú pháp
while condition: code goes here if another_condition: continue
Cú pháp
while condition: code goes here if another_condition: continue

Vòng lặp while ở trên chỉ in ra 0, 1, 2 nhưng khi đến 3 thì dừng.

Ví dụ
count = 0 while count < 5: if count == 3: continue print(count) count = count + 1
Ví dụ
count = 0 while count < 5: if count == 3: continue print(count) count = count + 1

Vòng lặp while ở trên chỉ in 0, 1, 2 và 4 (bỏ qua 3).

Bạn cũng có thể sử dụng next như trường hợp sử dụng vòng lặp for.

Bài tập

  1. In ra màn hình từ 0 đến 10 bằng vòng lặp for, thực hiện tương tự bằng vòng lặp while. Tính tổng các số từ 0 đến 10.
  2. In ra màn hình từ 10 đến 0 bằng vòng lặp for, thực hiện tương tự bằng vòng lặp while. Tính tổng các số từ 10 đến 0.
  3. Viết một vòng lặp in ra kết quả sau:
    # ## ### #### ##### ###### #######
  4. Sử dụng các vòng lặp lồng nhau để tạo mẫu như sau:
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
  5. In mẫu sau:
    0 x 0 = 0 1 x 1 = 1 2 x 2 = 4 3 x 3 = 9 4 x 4 = 16 5 x 5 = 25 6 x 6 = 36 7 x 7 = 49 8 x 8 = 64 9 x 9 = 81 10 x 10 = 100
  6. In ra các mục của list sau :['Python', 'Numpy', 'Pandas', 'Django', 'Flask'] bằng cách sử dụng vòng lặp for.
  7. Sử dụng vòng lặp for để in ra số chẵn từ 0 đến 100.
  8. Sử dụng vòng lặp for để in ra số lẻ từ 0 đến 100.
  9. Sử dụng tệp countries.py. In ra nước các quốc gia có ký tự United và quốc gia Vietnam
  10. Cho một list như sau ['banana', 'orange', 'mango', 'lemon'] hãy đảo ngược thứ tự các items bằng cách sử dụng vòng lặp.