Toidicode.com

Toidicode.com

BASIC TO ADVANCE

Bài 11: Vòng lặp trong Python

Phần trước, chúng ta đã được tìm hiểu về câu lệnh rẽ nhánh trong python rồi và các bạn cũng thấy nó khá đơn giản đúng không? Phần này chúng ta cũng sẽ tìm hiểu về một thứ không thể thiếu trong các ngôn ngữ lập trình đó là vòng lặp.

1, Vòng lặp là gì?

Vòng lặp (tiếng anh là loop) là một thuật ngữ dùng để diễn tả một hành động hay một cụm hành động được lặp đi lặp lại nhiều lần.

VD: Như chúng ta cứ uống nước xong là lại phải đi tiểu và hành động đó cứ xảy ra đến khi bạn die mới dừng. Thì đó cũng có thể coi là một vòng lặp :D.

Và trong Python thì nó cung cấp cho chúng ta 2 dạng vòng lặp chính đó là:

  • for
  • while

2, Vòng lặp for trong Python.

Vòng lặp for ở trong Python có tác dụng lặp các biến dữ liệu có trong list , tuple hoặc string,... Sử dụng cú pháp như sau:

for variable in data:
    # code

Trong đó:

  • variable là các biến tạm dùng để chứa dữ liệu sau mỗi lần lặp.
  • data là một list, tuple hoặc string,... chứa giá trị cần lặp.

 VD: Mình sẽ khai báo 1 string name = "thanhtaivtt" và dùng vòng lặp for để lặp ra từng ký tự của nó.

name = "thanhtaivtt"
for i in name:
    print(i)
# ket qua:
# t
# h
# a
# n
# h
# t
# a
# i
# v
# t
# t

Và đương nhiên là các vòng for này cũng có thể lồng nhau.

VD: Vòng for lồng nhau.

name = "thanhtaivtt"
for i in range(0,10):
    for j in range(i,10):
        print(j, end = " ")
    print ("")
# Ket qua:
# 0 1 2 3 4 5 6 7 8 9 
# 1 2 3 4 5 6 7 8 9 
# 2 3 4 5 6 7 8 9 
# 3 4 5 6 7 8 9 
# 4 5 6 7 8 9 
# 5 6 7 8 9 
# 6 7 8 9 
# 7 8 9 
# 8 9 
# 9 

Chú thích: ở đây mình có sử dụng hàm range(a,z) để tạo ra các con số từ a -> z, ở các phần sau mình sẽ nó rõ hơn về hàm này nhé! giờ các bạn cứ hiểu nó đơn giản như kia là được rồi à

3, Vòng lặp while.

Vòng lặp while trong Python dùng để lặp các dữ liệu mà giá trị ngừng có của nó là chưa biết trước.

Cú pháp sử dụng:

while condition:
    # code

Trong đó, condition là điều kiện quyết định vòng lặp while có được chạy hay không. Nếu condition trả về giá trị là True thì vòng lặp while mới được thực thi, và ngược lại thì nó sẽ không thực thi nếu condition trả về False.

VD: Mình sẽ viết một vòng lặp while in ra dãy số từ 1 đến 10.

i = 1;
while(i <= 10):
    print(i)
    i += 1

Đối với vòng lặp while này thì chúng ta cũng có thể lồng nó lại với nhau được.

VD: Lồng 2 vòng lặp while.

i = 1

while(i <= 10):
    j = 1
    while (j <= 10 - i):
        print(j, end = " ")
        j += 1
    print("")
    i += 1
# ket qua:
# 1 2 3 4 5 6 7 8 9
# 1 2 3 4 5 6 7 8
# 1 2 3 4 5 6 7
# 1 2 3 4 5 6
# 1 2 3 4 5
# 1 2 3 4
# 1 2 3
# 1 2
# 1

4, Các từ khóa tác động đến vòng lặp.

Thông thường trong một số trường hợp vòng lặp của chúng ta sẽ có thể không cần thực thi code trong một số vòng lặp cụ thể hay là cần nhảy lần vòng lặp đó và thực thi các lần lặp tiếp theo, và để làm được điều đó thì trong Python có hỗ trợ chúng ta 2 keyword để tác động đến vòng lặp là:

  • break - break giúp chúng ta chấm dứt vòng lặp tại thời điểm nó xuất hiện và các code cùng cấp phía sau nó sẽ không được thực thi nữa.
  • continue - giúp chúng ta nhảy qua lần lặp hiện tại và chuyển đến lần lặp tiếp theo, các code cùng cấp phía sau nó cũng sẽ không được thực hiện.

VD: Lệnh break.

i = 1

while(i <= 10):
    print(i)
    if i == 5 :
        break
    i += 1

# ket qua:
# 1
# 2
# 3
# 4
# 5

VD: Lệnh continue.

for i in "thanhtaivtt":
    if i == "n":
        continue
    print(i, end=" ")

# ket qua:
# t h a h t a i v t t 

5, Lời kết.

Vòng lặp là một phần rất quan trong và sẽ phải sử dụng thường xuyên đến nó trong các bài tiếp theo nên các bạn chú ý ôn thật kỹ nhé!

Đăng ký nhận tin.

Chúng tôi chỉ gửi tối đa 2 lần trên 1 tháng. Tuyên bố không spam mail!

Vũ Thanh Tài

About author
The best way to learn is to share
Xem tất cả bài đăng

12 Comments

Hello World 

BTLanh

5 năm trước

hi anh Tài, 

trong ví dụ về vòng lắp while, câu lệnh print(j, end = " ")

python báo lỗi invalid syntax ở phần end = " "     ????

giải thích giúp em với ạ, thanks

Long

5 năm trước

Cho em hỏi trong for có thể  nào lặp lùi được không? em cám ơn

Trần Hạnh Nhu

5 năm trước

Chào bạn, bạn có thể tham khảo 1 số cách sau à:

for n in range(6,0,-1):
    print(n)
# [6, 5, 4, 3, 2, 1]
for i in reversed(range(10)):
    print (i)

 

Vũ Thanh Tài

5 năm trước

Dear bạn,

Mình đang thắc mắc đoạn code này, đọc mãi mà ko hiểu lý do vì sao, nhờ bạn giải thích giúp.

greeting = 'Hello!'
count = 0

for letter in greeting:
    count += 1
    if count % 2 == 0:
        print(letter)
    print(letter)

print('done')

Print out:

H
e
e
l
l
l
o
!
!
done

Bạn có thể giải thích giúp mình ko? cảm ơn bạn.

Thang Nguyen

4 năm trước

count = 1 thì print trong if không chạy. print sau in ra chữ H.

count = 2 thì print trong in ra chữ e. print ngoài cũng in ra chữ e

count bằng 3 thì print ngoài chạy in ra 1 chữ l

count bằng 4 in ra 2 chữ l. tương tự...

vinh

4 năm trước

def main():


if __name__ == "__main__":
    main()

""" expected output:

1    *
2    **
3    ***
4    ****
5    *****
6    ******
7    *******
8    ********
9    *********
10    **********
"""

nay viet sao mn

thinh

4 năm trước

for i in range(11,0,-1):

Yen

3 năm trước

Thưa chú Tài, Cháu thấy trong bài này không có phần:

_____________________

1  | while condition:

2  |     #code

3  | else:

4  |     #code

------------------------------------

, sao không có phần này vậy anh?

Sun Fusion

4 năm trước

phần else trong while ko can thiệp vào vòng lặp nên có hay ko đều dc

oops

12 tháng trước

Thật sự ở vòng lặp em có thắc mắc tại sao i phải là = 1 ạ. Em biết là nếu không có vòng này thì nó cứ chạy mãi giá trị 1. Anh có thể giải thích giúp em được không ạ.

Thịnh

4 năm trước

Thầy ơi cho em hỏi bài em làm ấn chạy (run) không được là sao ạ.

Trọng Anh

2 năm trước

Bình luận

Captcha