12.Vòng lặp For và While trong Python

Vòng lặp là gì?

Vòng lặp cho phép bạn lặp lại việc thực thi một khối mã nguồn cho tới khi một điều kiện nhất định được thỏa mãn. Vòng lặp được sử dụng khá phổ biến trong lập trình. Không giống các ngôn ngữ lập trình khác với các vòng lặp khác nhau như for, while, do…while…, Python chỉ hỗ trợ vòng lặp for và vòng lặp while.

Vòng lặp for là gì?

Vòng lặp for được sử dụng để duyệt qua các phần tử trong một tập hợp. Nó thường được sử dụng khi bạn có một khối mã nguồn cần được thực thi “n” lần.

Vòng lặp While là gì?

Vòng lặp While được sử dụng để lặp lại một khối mã nguồn. Thay vì chỉ chạy khối mã nguồn một lần, nó sẽ thực thi khối mã nguồn đó nhiều lần cho tới khi thỏa mãn một điều kiện cho trước.

Trong bài này, chúng ta sẽ tìm hiểu:

  • Cách sử dụng “vòng lặp while”
  • Cách sử dụng “vòng lặp for”
  • Cách sử dụng vòng lặp for cho các tập hợp không phải số
  • Câu lệnh break trong vòng lặp for
  • Câu lệnh continue trong vòng lặp for
  • Hàm enumerate trong vòng lặp for
  • Ví dụ thực tế
  • Cách sử dụng vòng lặp for để thực hiện một câu lệnh nhiều lần

Cách sử dụng “vòng lặp while”

Cách vòng lặp while thực hiện giống hệt với cách làm việc của câu lệnh if, nhưng thay vì chỉ chạy khối mã nguồn một lần, vòng lặp while sẽ quay lại và lặp lại việc thực hiện khối mã nguồn từ đầu.

Cú pháp

while biểu_thức:
 câu_lệnh

Ví dụ:

#
# Example file for working with loops
#

def main():
    x=0
    #define a while loop
    while(x <4):
        print(x)
        x = x+1

if __name__ == "__main__":
   main()
  • Dòng lệnh 4: Biến x được gán giá trị 0
  • Dòng lệnh 7: Vòng lặp kiểm tra điều kiện x<4. Giá trị hiện tại của x là 0. Điều kiện là đúng. Chương trình thực hiện đoạn mã trong vòng lặp while.
  • Dòng lệnh số 8: Giá trị của x được in ra
  • Dòng lệnh 9: x được tăng thêm 1. Chương trình quay trở lại dòng 7. Bây giờ giá trị của x là 1 nhỏ hơn 4. Điều kiện là đúng và một lần nữa vòng lặp while được thực thi. Điều này tiếp tục cho đến khi x tăng lên tới giá trị 4 và điều kiện while trở thành sai.

Cách sử dụng “vòng lặp for”

Trong Python, “vòng lặp for” được gọi là biến lặp(iterator).

Cũng giống như vòng lặp while, “vòng lặp for” cũng được sử dụng để lặp lại chương trình.

Nhưng không giống như vòng lặp while phụ thuộc vào điều kiện đúng hay sai. “Vòng lặp For” phụ thuộc vào các phần tử mà nó phải duyệt qua.

Ví dụ:

#
# Example file for working with loops
#

def main():
    x=0
    #Define a for loop
    for x in range(2,7):
        print(x)

if __name__ == "__main__":
   main()

Vòng lặp for lặp với các số được khai báo trong một khoảng.

Ví dụ,

Vòng lặp for lặp với x trong khoảng (2,7)

Khi đoạn mã này được thực thi, nó sẽ in số nằm giữa 2 và 7 (2,3,4,5,6). Đoạn mã trên sẽ không duyệt tới số 7.

Vòng lặp for cũng có thể được sử dụng cho một tập các kiểu dữ liệu khác, chứ không chỉ có số. Chúng ta sẽ tìm hiểu trong mục tiếp theo.

Cách sử dụng vòng lặp for cho chuỗi

Trong bước này, chúng ta sẽ thấy “vòng lặp for” cũng có thể được sử dụng cho những kiểu dữ liệu khác ngoài số.

Ví dụ :

def main():
    #use a for loop over a collection
    Months = ["Jan","Feb","Mar","April","May","June"]
    for m in Months:
        print(m)


if __name__ == "__main__":
    main()
  • Dòng lệnh 3: Chúng ta lưu trữ các tháng (“Jan, Feb , Mar,April,May,June”) trong biến Months.
  • Dòng lệnh 4: Vòng lặp for sẽ duyệt từng giá trị trong biến Months. Giá trị hiện tại của Months được lưu trong biến m.
  • Dòng lệnh 5: In ra tháng.

Cách sử dụng câu lệnh break trong vòng lặp for

Break là hàm duy nhất trong vòng lặp for cho phép bạn ngắt hoặc chấm dứt việc thực hiện vòng lặp for.

Ví dụ:

def main():
    # use the break and continue statements
    for x in range (10,20):
        if (x == 15): break
        print(x)

if __name__ == "__main__":
    main()

Trong ví dụ này, chúng ta đã khai báo các số từ 10-20, nhưng chúng ta muốn vòng lặp for của chúng ta chấm dứt ở số 15 và không tiếp tục thực thi nữa. Vì vậy, chúng ta khai báo hàm break bằng cách định nghĩa (x == 15): break, sau đó, ngay khi chạy tới giá trị 15, chương trình sẽ được ngắt.

  • Dòng lệnh 10 khai báo biến x trong khoảng (10, 20)
  • Dòng lệnh 11 khai báo điều kiện break tại x == 15,
  • Dòng lệnh 12 Kiểm tra và lặp lại các bước cho đến khi đạt đến giá trị 15
  • Dòng lệnh 13 In ra kết quả

Cách sử dụng “câu lệnh continue” trong vòng lặp for

Lệnh continue sẽ khiến việc lặp không thực thi ở vị trí lặp hiện tại, NHƯNG sẽ tiếp tục thực hiện các vòng lặp sau đó.

Ví dụ

def main():
    for x in range (10,20):
        if (x % 5 == 0) : continue
        print(x)

if __name__ == "__main__":
    main()

Câu lệnh continue có thể được sử dụng trong vòng lặp for khi bạn muốn lấy ra một giá trị cụ thể từ danh sách.

Trong ví dụ này, chúng ta đã khai báo giá trị trong khoảng 10-20, nhưng trong các số này, chúng ta chỉ muốn những số KHÔNG chia hết cho 5 hoặc nói cách khác là những số chia cho 5 có số dư khác 0.

Vì vậy, trong khoảng giá trị cho trước (10, 11, 12,…19, 20) chỉ có 3 số (10,15,20) bị loại bỏ do chúng chia hết cho 5, các số còn lại thì không.

Vì vậy, với giá trị x bằng 10, 15 hoặc 20, vòng lặp for sẽ không tiếp tục chạy lệnh in ra x mà bỏ qua giá trị x tại các giá trị đó.

  • Dòng lệnh 10 Khai báo biến x trong khoảng (10, 20)
  • Dòng lệnh 12 Kiểm tra nếu số dư của phép chia x cho 5. Nếu bằng 0 thì tiếp tục sang vòng lặp tiếp theo (chứ không chạy lệnh print(x)).
  • Dòng lệnh 13 In ra kết quả

Cách sử dụng hàm “enumerate” cho “vòng lặp For”

Hàm enumerate trong “vòng lặp for” thực hiện hai điều:

  • Nó trả về giá trị chỉ số cho các phần tử
  • Và phần tử trong tập đang được xét.

Ví dụ:

Hàm enumerate được sử dụng để đánh số hoặc gán chỉ số cho các phần tử trong danh sách.

Giả sử, chúng ta muốn thực hiện đánh số cho các tháng (tháng 1, tháng 2, tháng 3, tháng 6), chúng ta có thể khai báo biến i để gán giá trị chỉ số, và biến m để gán giá trị tháng trong danh sách.

def main():
    #use a for loop over a collection
    Months = ["Jan","Feb","Mar","April","May","June"]
    for i, m in enumerate (Months):
        print(i,m)
       

if __name__ == "__main__":
    main()

Khi chương trình được thực thi, đầu ra của hàm enumerate trả về tên tháng với chỉ số của tháng trong danh sách như (0-Jan), (1- Feb), (2 – Mar), v.v.

  • Dòng lệnh 3 khai báo danh sách tháng [Jan, Feb…June].
  • Dòng lệnh 4 Khai báo biến i và m cho vòng lặp for.
  • Dòng lệnh 5 sẽ in ra kết quả và quay lại thực hiện mã nguồn trong vòng lặp For đối với các giá trị tháng còn lại.

Ví dụ thực tế

Cùng xem ví dụ khác về cách vòng lặp for lặp lại việc thực hiện các câu lệnh:

  Vòng lặp Python Mã nguồn
  Mã nguồn cho vòng lặp while
def main():
    x = 0
while (x < 4):
        print(x)
        x = x + 1
if __name__ == "__main__":
    main()
  Ví dụ đơn giản với vòng lặp For
def main():
    x=0
for x in range (2,7):
        print(x)


if __name__== "__main__":
    main()
  Sử dụng vòng lặp for với chuỗi
def main():
    Months = ["Jan", "Feb", "Mar", "April", "May", "June"]
    for m in (Months):
        print(m)

if __name__ == "__main__":
    main()
  Sử dụng câu lệnh break trong vòng lặp for
def main():
    for x in range(10, 20):
        if (x == 15): break
print(x)


if __name__ == "__main__":
    main()
  Sử dụng câu lệnh continue trong vòng lặp for
def main():
    for x in range(10, 20):
        if (x % 5 == 0): continue
print(x)


if __name__ == "__main__":
    main()
  Mã nguồn sử dụng “enumerate” với “ vòng lặp for”
def main():
    Months = ["Jan", "Feb", "Mar", "April", "May", "June"]

    for i, m in enumerate(Months):
        print(i, m)


if __name__ == "__main__":
    main()

Cách sử dụng vòng lặp for để lặp lại cùng một câu lệnh

Bạn có thể sử dụng vòng lặp để lặp đi lặp lại cùng một câu lệnh. Trong ví dụ sau, chúng ta sẽ in ra từ “guru99” ba lần.

Ví dụ: Để lặp lại cùng một câu lệnh nhiều lần, chúng ta khai báo các số trong biến i (i in 123). Và khi bạn chạy đoạn mã nguồn dưới đây, nó sẽ in ra (guru99) bằng với sô các số được khai báo trong biến (i in 123).

for i in '123':
    print("vimentor {}".format(i))

Giống như các ngôn ngữ lập trình khác, Python cũng cho phép nhiều dạng vòng lặp nhưng thay vì sử dụng một loạt các vòng lặp khác nhau, nó bị giới hạn với chỉ hai vòng lặp “vòng lặp while” và “vòng lặp for”.

  • Vòng lặp while được thực thi dựa trên việc câu lệnh điều kiện đưa ra là đúng hay sai.
  • Vòng lặp for được gọi là biến lặp, nó sẽ duyệt các phần tử dựa trên tập điều kiện cho trước.
  • Vòng lặp for trong Python cũng có thể sử dụng với nhiều kiểu dữ liệu khác nhau(cần đưa ra tập các phần tử chúng ta muốn duyệt).
  • Break được sử dụng trong vòng lặp for để dừng hay thoát khỏi chương trình tại bất cứ điểm nào.
  • Câu lệnh continue sẽ tiếp tục quá trình lặp và in ra kết quả dựa trên tập điều kiện cho trước.
  • Hàm enumerate trong “vòng lặp for” trả về phần tử của tập mà chúng ta đang làm việc cùng với giá trị chỉ số.

Ví dụ sử dụng Python 2

Mã nguồn sử dụng ở trên đều dùng Python3, nếu bạn muốn dùng Python2, hãy xem đoạn mã dưới đây:


# How to use "While Loop"
#Example file for working with loops
#
def main():
    x=0
    #define a while loop
    while(x <4):
        print x
        x = x+1

if __name__ == "__main__":
    main()

#How to use "For Loop"
#Example file for working with loops
#
def main():
    x=0
    #define a while loop
#    while(x <4):
#        print x
#        x = x+1


#Define a for loop 
for x in range(2,7):
        print x


if __name__ == "__main__":
    main()

#How to use For Loop for String
def main():
    #use a for loop over a collection
    Months = ["Jan","Feb","Mar","April","May","June"]
    for m in Months:
        print m
        
if __name__ == "__main__":
    main()

#How to use break statements in For Loop
def main():
    #use a for loop over a collection
    #Months = ["Jan","Feb","Mar","April","May","June"]
    #for m in Months:
        #print m
        
# use the break and continue statements
        for x in range (10,20):
            if (x == 15): break
            #if (x % 2 == 0) : continue
            print x

if __name__ == "__main__":
    main()

#How to use "continue statement" in For Loop
def main():
    #use a for loop over a collection
    #Months = ["Jan","Feb","Mar","April","May","June"]
    #for m in Months:
        #print m
        
# use the break and continue statements        
        for x in range (10,20):
            #if (x == 15): break
            if (x % 5 == 0) : continue
            print x

if __name__ == "__main__":
    main()

#How to use "enumerate" function for "For Loop"
def main():
    #use a for loop over a collection
    Months = ["Jan","Feb","Mar","April","May","June"]
    for i, m in enumerate (Months):
        print i,m
        
# use the break and continue statements
        #for x in range (10,20):
        #if (x == 15): break
        #if (x % 5 == 0) : continue
        #print x
    
if __name__ == "__main__":
    main()

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *