Vòng lặp While trong Python

Lập trình Python cơ bản

5.0 (11 đánh giá)
Tạo bởi Kteam Cập nhật lần cuối 3 năm trước 120.230 lượt xem 145 bình luận
Tác giả/Dịch giả: Kteam Nông Thanh Toàn
Học nhanh

Danh sách bài học

01. Giới thiệu ngôn ngữ lập trình Python 02. Cài đặt môi trường Python 03. Cách chạy chương trình Python 04. Cách ghi chú trong Python 05. Biến trong Python 06. Kiểu dữ liệu số trong Python 07. Kiểu dữ liệu chuỗi trong Python - Phần 1 08. Kiểu dữ liệu chuỗi trong Python - Phần 2 09. Kiểu dữ liệu chuỗi trong Python - Phần 3 10. Kiểu dữ liệu chuỗi trong Python - Phần 4 11. Kiểu dữ liệu chuỗi trong Python - Phần 5 12. Kiểu dữ liệu List trong Python - Phần 1 13. Kiểu dữ liệu List trong Python - Phần 2 14. Kiểu dữ liệu Tuple trong Python 15. Sự khác nhau về toán tử của Hashable object và Unhashable object trong Python 16. Kiểu dữ liệu Set trong Python 16. Kiểu dữ liệu Set trong Python – Phần 2 17. Kiểu dữ liệu Dict trong Python - Phần 1 18. Kiểu dữ liệu Dict trong Python - Phần 2 19. Xử lý file trong Python 20. Iteration và một số hàm hỗ trợ cho iteration object trong Python 21. Nhập xuất trong Python - Hàm xuất 22. Nhập xuất trong Python - Hàm nhập 23. Kiểu dữ liệu Boolean trong Python 24. Cấu trúc rẽ nhánh trong Python 25. Vòng lặp While trong Python 26. Vòng lặp For trong Python - Phần 1 27. Vòng lặp For trong Python - Phần 2 28. Kiểu dữ liệu Function trong Python - Sơ lược về hàm 29. Kiểu dữ liệu Function trong Python - Positional và keyword argument 30. Kiểu dữ liệu Function trong Python - Packing và unpacking arguments 31. Kiểu dữ liệu Function trong Python - Biến locals và globals 32. Kiểu dữ liệu Function trong Python - Return 33. Kiểu dữ liệu function trong Python – Yield 34. Kiểu dữ liệu function trong Python – Lambda 35. Kiểu dữ liệu Function trong Python - Functional tools 36. Kiểu dữ liệu Function trong Python - Đệ quy (recursion) 37. Giới thiệu module trong Python 38. Package trong python

Vòng lặp While trong Python

Dẫn nhập

Trong bài trước, Kteam đã giới thiệu đến bạn CÂU ĐIỀU KIỆN IF - một dạng cấu trúc rẽ nhánh rất quan trọng trong mọi ngôn ngữ lập trình không chỉ riêng Python

Ở bài này Kteam sẽ giới thiệu với các bạn VÒNG LẶP WHILE TRONG PYTHON.


Nội dung

Để đọc hiểu bài này tốt nhất bạn cần:

Bạn và Kteam sẽ cùng tìm hiểu những nội dung sau đây

  • Đặt vấn đề
  • Cấu trúc vòng lặp while và cách hoạt động
  • Sử dụng vòng lặp để xử lí chuỗi, list, tuple
  • Câu lệnh break và continue
  • Cấu trúc vòng lặp while-else và cách hoạt động

Đặt vấn đề

Lại là câu chuyện về Tèo – Kter “bờ rào” của Kteam. Sắp tới là sinh nhật Tèo, Tèo tham vọng mời tất cả thành viên trong group lập trình của Kteam. Thế nên, Tèo mua một xấp giấy về ghi thiệp mời các bạn tham dự buổi tiệc. 

Một bạn, hai bạn, rồi ba bạn và tới bạn thứ năm thì Tèo đã thấm mệt. Dòng chữ cũng không được nắn nót như ban đầu. Nhớ lại là còn hơn 9999 người cần phải mời nữa. Nên Tèo mệt quá, không muốn mời ai nữa và ăn sinh nhật một mình luôn.

Nếu bạn là Tèo, bạn sẽ viết được bao nhiêu tấm thiệp với dòng chữ nắn nót và đẹp như tấm thiệp ban đầu? Liệu bạn có đủ kiên nhẫn viết hết 1000 tấm thiệp thậm chí là 100000?

Hiển nhiên là “Không!”. Mà trường hợp của Tèo cũng chả phải hiếm. Vì vậy, con người đã tạo ra máy tính để giúp họ làm những việc tương tự. Máy tính có khả năng lặp đi lặp lại một tiến trình với số lần rất lớn. Hiệu suất của lần cuối cùng cũng như lần đầu tiên. Thêm một điều nữa là công việc đó được làm với một tốc độ chóng mặt

Làm sao chúng làm được như vậy? Đó là nhờ tuyệt kĩ vòng lặp. Và chúng ta sẽ bắt đầu đi tìm hiểu chiêu thức vòng lặp đầu tiên trong Python chính là While.


Cấu trúc vòng lặp while và cách hoạt động

Nào! Cùng ngó sơ cấu trúc, sau đó Kteam sẽ giải thích cho bạn cách mà nó hoạt động

while expression:

     # while-block

Lưu ý: Việc chia block như thế này cũng giống như khi bạn sử dụng câu lệnh if và đã được Kteam giới thiệu ở bài trước CẤU TRÚC RẼ NHÁNH.


Nó sẽ hoạt động ra sao?

Rất đơn giản! Việc đầu tiên, Python sẽ kiểm tra giá trị boolean của expression. Nếu là False, thì bỏ qua while-block và đến với câu lệnh tiếp theo. Ngược lại, sẽ thực hiện toàn bộ câu lệnh trong while-block. Sau khi thực hiện xong, quay ngược lại kiểm tra giá trị boolean của expression một lần nữa. Nếu False thì bỏ qua while-block, còn True thì tiếp tục thực hiện while-block. Và sau khi thực hiện xong while-block lại quay về kiểm tra giá trị boolean expression như những lần trước.

Ví dụ:


Sử dụng vòng lặp để xử lí chuỗi, list, tuple

Đây là những iterable cho phép ta truy xuất một giá trị bất kí trong nó bằng phương pháp indexing. Thế nên, ta có thể nhờ điều này kết hợp với vòng lặp để xử lí chúng.

Đơn giản phải không nào. ListTuple hoàn toàn tương tự.


Câu lệnh break và continue

Lưu ý: Hai câu lệnh này chỉ có thể dùng trong các vòng lặp

Câu lệnh break

Câu lệnh break dùng để kết thúc vòng lặp. Cứ nó nằm trong block của vòng lặp nào thì vòng lặp đó sẽ kết thúc khi chạy câu lệnh này.

Trong trường hợp vòng lặp a chứa vòng lặp b. Trong vòng lặp b chạy câu lệnh break thì chỉ vòng lặp b kết thúc, còn vòng lặp a thì không.

Ví dụ *:


Câu lệnh continue

Câu lệnh này dùng để chạy tiếp vòng lặp. Giả sử một vòng lặp có cấu trúc như sau:

while expression:

    #while-block-1

    continue

    #while-block-2

Khi thực hiện xong while-block-1, câu lệnh continue sẽ tiếp tục vòng lặp, không quan tâm những câu lệnh ở dưới continue và như vậy nó đã bỏ qua while-block-2.

Ví dụ: 


Câu lệnh pass

Về cơ bản, pass có thể được hiểu như là “không có gì”. Nó dường như chỉ được để cho có.

while expression:

 pass

Khi thực hiện các lệnh trong vòng lặp (và cả hàm) , nó sẽ xem lệnh pass này như là “vô hình”. Nhưng nó sẽ giúp tránh lỗi nếu như vòng lặp (hàm) của bạn không có bất kì một lệnh nào.

Ví dụ: 


Cấu trúc vòng lặp while-else và cách hoạt động

Ta sẽ xem cấu trúc trước:

while expression:

    # while-block

else:

    # else-block

Cấu trúc này gần tương tự như while bình thường. Thêm một điều, khi vòng vòng lặp while kết thúc thì khối lệnh else-block sẽ được thực hiện.

Ví dụ:

Trong trường hợp trong while-block chạy câu lệnh break thì vòng lặp while sẽ kết thúc và phần else-block cũng sẽ không được thực hiện.


Hiện tượng vòng lặp vô tận

Các bạn cần lưu ý là, đối với vòng lặp while, trong nhiều trường hợp, bạn có thể sẽ không biết trước số lần lặp, và có thể sẽ có nhiều lỗi không mong muốn. Điển hình nhất là vòng lặp vô tận:

Đoạn code trên sẽ chạy mãi mãi mà không bao giờ dừng lại. Lí do là vì giá trị của biến a sẽ không bao giờ bằng 0.

Đối với những người mới học, cần nắm bắt rõ cách hoạt động của vòng lặp while để tránh các lỗi không đáng có.


Củng cố bài học

Đáp án bài trước

Bạn có thể tìm thấy câu hỏi của phần này tại CÂU HỎI CỦNG CỐ trong bài CẤU TRÚC RẼ NHÁNH TRONG PYTHON

Cách 1:

Cách 2:


Câu hỏi củng cố

  1. Viết lại một vòng lặp có chức năng tương tự ví dụ * nhưng không dùng câu lệnh break
  2. Cho một file text tên draft.txt như sau:

Trong file này có một số chữ Kteam (Kteam sẽ không xuất hiện ở đầu dòng), và trước nó là một chữ ngẫu nhiên nào đó và nhiệm vụ của bạn là đổi chữ đó thành How. Nhớ là sử dụng vòng lặp.

Sau khi đổi thành công, bạn lưu nội dung đó vào file tên kteam.txt.

Đây là mẫu của kteam.txt:

  1. Sắp xếp một mảng số nguyên có dạng như sau:

Lưu ý: là các số 11 là những số cố định không được thay đổi vị trí của nó.

Sau khi sắp xếp lại mảng trên sẽ là:

Đáp án của phần này sẽ được trình bày ở bài tiếp theo. Tuy nhiên, Kteam khuyến khích bạn tự trả lời các câu hỏi để củng cố kiến thức cũng như thực hành một cách tốt nhất! 


Kết luận

Qua bài viết này, Bạn đã biết về VÒNG LẶP WHILE TRONG PYTHON.

Ở bài viết sau, Kteam sẽ nói đến một vòng lặp nữa đó là VÒNG LẶP FOR TRONG PYTHON.

Cảm ơn bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.


Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Vòng lặp While trong Python dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên likeshare để ủng hộ Kteam và tác giả nhé!


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Tác giả/Dịch giả

Khóa học

Lập trình Python cơ bản

Lập trình Python cơ bản

Đánh giá

5.0
11 đánh giá
Đánh giá
5
11
4
3
2
1
QDesign đã đánh giá 2 năm trước

havyle3105 đã đánh giá 2 năm trước

NhuwLikesVeggies đã đánh giá 3 năm trước

Quốc Thắng đã đánh giá 3 năm trước

muladpham đã đánh giá 3 năm trước

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
Khang37 đã bình luận 3 tháng trước

filve_even_numbers = []

k_number = 0

 

while len(filve_even_numbers) < 5 :

    k_number += 1

    if k_number % 2 == 0 :

        filve_even_numbers.append(k_number)

    continue

print(filve_even_numbers)

khuongnguyen711 đã bình luận 12 tháng trước

câu 2:

files = open('draft.txt')

for i in range(4):

    strs = files.readline().split()

    locat = strs.index('Kteam')

    while locat < len(strs):

        if strs[locat] == 'Kteam':

            strs[locat - 1] = 'How'

        locat+= 1

    newstrs =' '.join(strs)

    with open('kteam.txt','a+') as f:

        print(newstrs, file = f)

files.close()

khuongnguyen711 đã bình luận 12 tháng trước

câu 1: 

five_even_numbers = []

k_number = 1

while k_number > 0: 

    if k_number % 2 == 0: 

        five_even_numbers.append(k_number) 

    if len(five_even_numbers) == 5: 

        k_number = 0

        print(five_even_numbers)

    else:

        k_number += 1

Bikeys đã bình luận khoảng 1 năm trước

Câu 2:

with open('draft.txt','r') as biendem:

   

    bien = 1

    filemoi=''

    while bien <5:

        biendem1 = biendem.readline().split()

        change=biendem1.index('Kteam')

        biendem1[change-1] = 'HOW'          

        print(biendem1)

        filemoi += ' '.join(biendem1) + '\n'

        bien +=1

       

with open('Bteam.txt','w') as output:

    output.write(filemoi)

dongtv001 đã bình luận khoảng 1 năm trước

câu 1 : 

a = []

k = 1

while k <= 10:

    k +=1

    if k % 2 == 0:

        a.append(k)

        continue

    if len(a) == 5:

        break

print(a)

Không có video.