vòng lặp for được sử dụng khi bạn có một khối mã mà bạn muốn lặp lại một số lần cố định. Vòng lặp for luôn được sử dụng kết hợp với một đối tượng có thể lặp lại, như danh sách hoặc dải ô. Câu lệnh for của Python lặp lại các phần tử của một dãy theo thứ tự, mỗi lần thực hiện khối đó. Ngược lại câu lệnh for với vòng lặp ''while'', được sử dụng khi một điều kiện cần được kiểm tra mỗi lần lặp hoặc để lặp lại mãi mãi một khối mã. Ví dụ Show
Đối với vòng lặp từ 0 đến 2, do đó chạy 3 lần for x in range(0, 3): print("We're on time %d" % (x)) Trong khi vòng lặp từ 1 đến vô cùng, do đó chạy mãi mãi x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 1 Khi chạy ví dụ trên, bạn có thể dừng chương trình bằng cách nhấn đồng thời ctrl+c. Như bạn có thể thấy, các cấu trúc vòng lặp này phục vụ các mục đích khác nhau. Vòng lặp for chạy trong một số lần cố định, trong khi vòng lặp while chạy cho đến khi điều kiện vòng lặp thay đổi. Trong ví dụ này, điều kiện là giá trị boolean True sẽ không bao giờ thay đổi, vì vậy nó sẽ chạy mãi mãi Họ làm việc như thế nào?Nếu bạn đã thực hiện bất kỳ chương trình nào trước đây, chắc chắn bạn đã bắt gặp một vòng lặp for hoặc tương đương với nó. Nhiều ngôn ngữ có các điều kiện trong cú pháp vòng lặp for của chúng, chẳng hạn như biểu thức quan hệ để xác định xem vòng lặp đã hoàn thành hay chưa và biểu thức gia số để xác định giá trị vòng lặp tiếp theo. Trong Python, thay vào đó, điều này được kiểm soát bằng cách tạo chuỗi thích hợp. Về cơ bản, bất kỳ đối tượng nào có phương thức lặp lại đều có thể được sử dụng trong vòng lặp for. Các chuỗi chẵn, mặc dù không có phương thức có thể lặp lại - nhưng chúng tôi sẽ không đề cập đến vấn đề đó ở đây. Về cơ bản, có một phương thức có thể lặp lại có nghĩa là dữ liệu có thể được trình bày ở dạng danh sách, trong đó có nhiều giá trị theo thứ tự. Bạn có thể xác định các lần lặp của riêng mình bằng cách tạo một đối tượng với các phương thức next() và iter(). Điều này có nghĩa là bạn sẽ hiếm khi phải xử lý các số nguyên khi nói đến các vòng lặp for trong Python - tuyệt vời cho bất kỳ ai Vòng lồng nhauKhi bạn có một khối mã mà bạn muốn chạy x số lần, thì một khối mã trong mã đó mà bạn muốn chạy y số lần, bạn sử dụng cái được gọi là "vòng lặp lồng nhau". Trong Python, chúng được sử dụng nhiều bất cứ khi nào ai đó có danh sách các danh sách - một đối tượng có thể lặp lại trong một đối tượng có thể lặp lại for x in range(1, 11): for y in range(1, 11): print('%d * %d = %d' % (x, y, x*y)) Giống như vòng lặp while, vòng lặp for có thể được thực hiện để thoát trước khi kết thúc đối tượng đã cho. Điều này được thực hiện bằng cách sử dụng câu lệnh break, câu lệnh này sẽ ngay lập tức thoát khỏi vòng lặp và tiếp tục thực hiện ở câu lệnh đầu tiên sau khối. Bạn cũng có thể có một mệnh đề khác tùy chọn, mệnh đề này sẽ chạy nếu vòng lặp for thoát ra một cách sạch sẽ - nghĩa là không bị ngắt for x in range(3): if x == 1: break ví dụVì. Khác for x in range(3): print(x) else: print('Final x = %d' % (x)) Chuỗi như một lần lặp string = "Hello World" for x in string: print(x) Liệt kê dưới dạng có thể lặp lại collection = ['hey', 5, 'd'] for x in collection: print(x) Lặp lại Danh sách các danh sách list_of_lists = [ [1, 2, 3], [4, 5, 6], [7, 8, 9]] for list in list_of_lists: for x in list: print(x) Tạo iterable của riêng bạn ________số 8Trình tạo phạm vi của riêng bạn sử dụng năng suất def my_range(start, end, step): while start <= end: yield start start += step for x in my_range(1, 10, 0.5): print(x) Ghi chú về `phạm vi`Hàm ''phạm vi'' thường xuất hiện trong các câu lệnh for mà bạn có thể nghĩ rằng phạm vi là một phần của cú pháp for. Không phải vậy. đó là một hàm tích hợp sẵn của Python trả về một chuỗi theo một mẫu cụ thể (thường là các số nguyên tuần tự), do đó đáp ứng yêu cầu cung cấp một chuỗi cho câu lệnh for để lặp lại. Vì for có thể hoạt động trực tiếp trên các chuỗi nên thường không cần đếm. Đây là cấu trúc phổ biến dành cho người mới bắt đầu (nếu chúng đến từ ngôn ngữ khác với cú pháp vòng lặp khác) Vòng lặp trong lập trình cho phép chúng ta thực thi liên tục một tập lệnh/khối mã lệnh cho đến khi thỏa mãn một điều kiện nào đó Chúng ta cũng có thể sử dụng các vòng lặp để lặp lại một tập hợp dữ liệu và thực hiện thao tác tương tự trên từng mục trong tập dữ liệu x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 10 Trên đây là vòng lặp Python x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 112 lặp qua danh sách tên và in tất cả tên Trong trường hợp chúng ta muốn dừng lặp lại trước khi đến mục cuối cùng hoặc trước khi một điều kiện nhất định được đáp ứng, chúng ta có thể sử dụng câu lệnh x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 113. Câu lệnh x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 113 sẽ có điều kiện riêng của nó – điều này cho nó biết khi nào thì "ngắt" vòng lặp Trong bài viết này, trước tiên chúng ta sẽ xem cách sử dụng câu lệnh x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 113 trong vòng lặp x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 112 và x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 117. Sau đó, chúng ta sẽ xem xét một số phương pháp mà chúng ta có thể sử dụng để phá vỡ các vòng lặp lồng nhau trong Python Làm thế nào để bạn viết một câu lệnh x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 113 bằng Python?Bạn định nghĩa câu lệnh x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 113 trong vòng lặp mà bạn muốn nó kết thúc. Trong phần này, chúng ta sẽ xem cách sử dụng câu lệnh x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 113 trong vòng lặp x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 112 và x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 117 Cách sử dụng câu lệnh x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 113 trong vòng lặp x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 112Đây là một ví dụ x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 11 Trong đoạn mã trên, chúng tôi đang in một danh sách tên for x in range(1, 11): for y in range(1, 11): print('%d * %d = %d' % (x, y, x*y))5 Sau đó, chúng tôi đã tạo một điều kiện mới để kiểm tra khi biến for x in range(1, 11): for y in range(1, 11): print('%d * %d = %d' % (x, y, x*y))55 có tên bằng "Jane". Khi điều kiện đó được đáp ứng, vòng lặp được yêu cầu dừng lại. Nó dừng vì câu lệnh x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 113 dừng vòng lặp khi for x in range(1, 11): for y in range(1, 11): print('%d * %d = %d' % (x, y, x*y))55 là "Jane" for x in range(1, 11): for y in range(1, 11): print('%d * %d = %d' % (x, y, x*y))9 Điều này cũng giống như nói. "in tất cả các tên và dừng lại khi bạn đến chỗ Jane". Vì vậy, trong bảng điều khiển của chúng tôi, trong số ba tên — for x in range(1, 11): for y in range(1, 11): print('%d * %d = %d' % (x, y, x*y))58 — chỉ có "John" và "Jane" được in Chúng ta cũng có thể làm điều này với những con số for x in range(3): if x == 1: break1 Đoạn mã trên in ra một dãy số từ 0 đến 9. Nhưng chúng ta có thể ngăn vòng lặp này in tất cả các số – thay vào đó chúng ta có thể dừng ở một số cụ thể. Đây là cách for x in range(3): if x == 1: break2 Bây giờ các vòng dừng lại ở 5. Vì vậy, chúng tôi sẽ chỉ thấy 0, 1, 2, 3, 4 và 5 trong bảng điều khiển Cách sử dụng câu lệnh x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 113 trong vòng lặp x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 117Ví dụ trong phần này sẽ tương tự như ví dụ của phần trước. Thay vào đó, chúng tôi sẽ sử dụng vòng lặp x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 117 for x in range(3): if x == 1: break6 Đoạn mã trên in ra một dãy số từ 0 đến 9. Chúng tôi sẽ sử dụng x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 113 để ngừng in số khi chúng tôi đến 5 for x in range(3): if x == 1: break8 Giống như chúng ta đã làm trong phần trước, chúng ta đã tạo một điều kiện mới. for x in range(1, 11): for y in range(1, 11): print('%d * %d = %d' % (x, y, x*y))93 và khi điều kiện này được đáp ứng, vòng lặp sẽ kết thúc thay vì in tất cả đến 9 Cách sử dụng câu lệnh x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 113 trong vòng lặp lồng nhauTrong phần này, chúng ta sẽ xem cách sử dụng câu lệnh x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 113 trong các vòng lặp lồng nhau Đây là một vòng lặp lồng nhau trông như thế nào for x in range(3): print(x) else: print('Final x = %d' % (x))2 Các vòng lặp lồng nhau thường có thể gây nhầm lẫn cho người mới bắt đầu. Vì vậy, nếu bạn đang thắc mắc làm thế nào chúng tôi có kết quả ở trên (được nhận xét trong mã), thì đây là giải thích ngắn gọn for x in range(1, 11): for y in range(1, 11): print('%d * %d = %d' % (x, y, x*y))96 sẽ cho chúng ta dãy số từ 0 đến 3 Chỉ in for x in range(1, 11): for y in range(1, 11): print('%d * %d = %d' % (x, y, x*y))97 sẽ cho chúng ta 0, 1, 2, 3. Nhưng chúng tôi đang lồng một dãy số khác trong vòng lặp. for x in range(1, 11): for y in range(1, 11): print('%d * %d = %d' % (x, y, x*y))98 Những gì vòng lặp thứ hai thực hiện là nhân đôi mỗi số for x in range(1, 11): for y in range(1, 11): print('%d * %d = %d' % (x, y, x*y))99 với số lượng số nguyên mà nó có (trong phạm vi for x in range(3): if x == 1: break10). Chúng tôi có bốn số trong phạm vi for x in range(3): if x == 1: break10 – 0, 1, 2, 3 Vì vậy, đối với phạm vi for x in range(1, 11): for y in range(1, 11): print('%d * %d = %d' % (x, y, x*y))99, số đầu tiên là 0 và nó sẽ xuất hiện bốn lần. Mỗi lần nó xuất hiện, nó lấy một số từ dãy for x in range(3): if x == 1: break10; . 0 và 0, 0 và 1, 0 và 2, 0 và 3. Điều này áp dụng cho các số khác trong phạm vi for x in range(1, 11): for y in range(1, 11): print('%d * %d = %d' % (x, y, x*y))99 Nếu bạn vẫn thấy điều này khó hiểu, thì hãy thử tự chạy mã. Hãy thử thay đổi phạm vi của từng vòng lặp để xem điều gì xảy ra với đầu ra Hãy phá vỡ vòng lặp bằng cách sử dụng câu lệnh x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 113 string = "Hello World" for x in string: print(x)3 Mặc dù vòng lặp trong ví dụ trên dường như đã dừng, nhưng khi xem xét kỹ hơn kết quả đầu ra (đã nhận xét ở trên), bạn sẽ nhận ra rằng vòng lặp bên ngoài vẫn đang in ra tất cả các giá trị của nó, điều không như ý muốn Vì vậy, chỉ sử dụng câu lệnh x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 113 không thực sự phá vỡ một vòng lặp lồng nhau. Hãy xem một số cách giải quyết để đạt được kết quả mong muốn của chúng tôi Sử dụng biến Booleanx = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 110 Trong ví dụ trên, chúng tôi đang sử dụng một biến boolean có giá trị ban đầu là for x in range(3): if x == 1: break17. Khi vòng lặp đến điểm ngắt dự định, chúng tôi đặt giá trị boolean này là for x in range(3): if x == 1: break18, nhưng đó không phải là tất cả. Ta kiểm tra khi biến là for x in range(3): if x == 1: break18 rồi gán câu lệnh x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 113 Sử dụng Tuyên bố Break hai lầnx = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 111 Trong ví dụ này, chúng tôi xác định hai câu lệnh for x in range(3): if x == 1: break21 – cả hai đều trả về câu lệnh x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 113 để buộc vòng lặp bị ngắt Mặc dù các giải pháp thay thế này có thể đã kết thúc vòng lặp tại một trường hợp nhất định, nhưng bạn sẽ nhận thấy rằng giá trị của vòng lặp bên trong vẫn giữ nguyên mỗi khi vòng lặp bị ngắt Điều này không có nghĩa là các vòng lặp lồng nhau là xấu. Nhưng hãy chắc chắn rằng bạn thực sự cần chúng trước khi thực hiện chúng trong logic của bạn Phần kết luậnTrong bài viết này, chúng ta đã biết cách sử dụng câu lệnh x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 113 để kết thúc một vòng lặp trước khi điều kiện ban đầu của vòng lặp được đáp ứng hoặc trước khi quá trình lặp qua các mục trong tập dữ liệu hoàn tất Chúng tôi đã xem một số ví dụ về cách bạn có thể sử dụng câu lệnh x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 113 trong cả hai vòng lặp x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 112 và x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 117 Cuối cùng, chúng ta đã nói về các vòng lặp lồng nhau. Chúng tôi phát hiện ra rằng câu lệnh x = 1 while True: print("To infinity and beyond! We're getting close, on %d now!" % (x)) x += 113 không thực sự dừng vòng lặp. Điều này khiến chúng ta thấy một số ví dụ về một số phương pháp mà chúng ta có thể sử dụng để phá vỡ một vòng lặp lồng nhau trong Python Mã hóa vui vẻ QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO Tiểu sử của tác giả này có thể được tìm thấy trong các bài viết của ông Nếu bạn đọc đến đây, hãy tweet cho tác giả để cho họ thấy bạn quan tâm. Tweet một lời cảm ơn Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu Tại sao vòng lặp của tôi dừng Python?Python cung cấp hai từ khóa kết thúc sớm một vòng lặp. Câu lệnh break trong Python ngay lập tức kết thúc một vòng lặp hoàn toàn . Việc thực thi chương trình tiếp tục với câu lệnh đầu tiên sau thân vòng lặp. Câu lệnh continue của Python ngay lập tức chấm dứt vòng lặp hiện tại.
Điều gì khiến vòng lặp for kết thúc?Câu lệnh break thoát hoàn toàn vòng lặp for hoặc while. Để bỏ qua phần còn lại của hướng dẫn trong vòng lặp và bắt đầu lần lặp tiếp theo, hãy sử dụng câu lệnh tiếp tục. break không được xác định bên ngoài vòng lặp for hoặc while. Để thoát khỏi một chức năng, sử dụng return.
Điều gì phá vỡ vòng lặp for trong Python?'Break' trong Python là câu lệnh điều khiển vòng lặp . Nó được sử dụng để kiểm soát trình tự của vòng lặp. Giả sử bạn muốn kết thúc một vòng lặp và chuyển sang mã tiếp theo sau vòng lặp; . Một tình huống điển hình của việc sử dụng Break trong Python là khi một điều kiện bên ngoài kích hoạt việc kết thúc vòng lặp.
Chúng ta có thể chạy vòng lặp vô hạn trong Python không?Chúng ta có thể tạo vòng lặp vô hạn trong Python thông qua câu lệnh while . Trong một vòng lặp, biến được đánh giá và cập nhật liên tục (trong khi điều kiện đã cho là Đúng). Chúng ta có thể tạo một vòng lặp vô hạn trong Python nếu chúng ta đặt điều kiện theo cách mà nó luôn đánh giá là Đúng. |