updated July 05, 2024188 views

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

for iterator in lst:
    code goes here
numbers = [0, 1, 2, 3, 4, 5]
for number in numbers:
    print(number)

string

for iterator in string:
    code goes here
language = 'Python'
for letter in language:
    print(letter)

tuple

for iterator in tpl:
    code goes here
numbers = (0,1,2,3,4,5)
for number in numbers:
    print(number)

dictionary

for iterator in dct:
    code goes here
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  giá trị được in ra

set

for iterator in st:
    code goes here
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)
  • 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 đó.
for iterator in sequence:
    code goes here
    if condition:
        break
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.

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.
for iterator in sequence:
    code goes here
    if condition:
        continue
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.

# 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)

range()

Hàm 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) với ba tham số là start, end, step.

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}
for number in range(11):
    print(number)   # i ra từ 0 đến 10
for i in range (5, 11) :
    print(i); # từ 5 đến 10
# 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.

for x in y:
    for t in s:
        print(t)
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

for iterator in range(start, end, increment):
    do something
else:
    print('The loop ended')
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).

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.

while condition:
    code goes here
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.

while condition:
    code goes here
else:
    code goes here
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.
while condition:
    code goes here
    if another_condition:
        break
count = 0
while count < 5:
    print(count)
    count = count + 1
    if count == 3:
        break
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:
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.

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.