Quay lại một bước trong vòng lặp python

Biết cách thoát khỏi vòng lặp đúng cách là một kỹ năng quan trọng. Đọc tiếp để tìm hiểu các công cụ bạn cần để kiểm soát các vòng lặp của mình

Trong bài viết này, chúng tôi sẽ chỉ cho bạn một số cách khác nhau để kết thúc một vòng lặp trong Python. Điều này thoạt nghe có vẻ hơi tầm thường, nhưng có một số khái niệm quan trọng cần hiểu về các câu lệnh điều khiển. Chúng tôi cũng sẽ giới thiệu một số cách ít được biết đến hơn để kết thúc các vòng lặp trong Python để cung cấp cho bạn các công cụ giúp kiểm soát tốt hơn cách chương trình của bạn được thực thi

Nếu bạn là người mới bắt đầu sử dụng Python, chúng tôi khuyên bạn nên bắt đầu với bài viết này để tìm hiểu một số thuật ngữ chúng tôi sử dụng. Hoặc vui lòng xem khóa học này, khóa học này rất phù hợp cho người mới bắt đầu vì nó không yêu cầu kiến ​​thức trước về lập trình hoặc bất kỳ kinh nghiệm CNTT nào

Lặp lại với vòng lặp for

Điểm vào ở đây là sử dụng vòng lặp for để thực hiện các phép lặp. Vòng lặp for là một trong những khái niệm cơ bản quan trọng nhất trong Python. Bạn sẽ bắt gặp chúng trong nhiều ngữ cảnh và hiểu cách chúng hoạt động là bước đầu tiên quan trọng

Đối với những người mới làm quen với Python, bài viết này về vòng lặp for là một nơi tốt để bắt đầu. Về cơ bản, vòng lặp for là một cách để lặp lại một tập hợp dữ liệu. Dữ liệu có thể là số, ví dụ: số dấu phẩy động hoặc số nguyên hoặc thậm chí dữ liệu văn bản và có thể được lưu trữ trong các cấu trúc khác nhau bao gồm danh sách, bộ dữ liệu, bộ và từ điển. Để biết thêm tài liệu chuyên sâu về các cấu trúc dữ liệu này, hãy xem khóa học này

Nó chưa kết thúc cho đến khi nó kết thúc

Sự lặp lại ngôn ngữ này đã là câu thần chú của nhiều kẻ yếu thế trong một cuộc thi. Đây cũng là điểm dừng đầu tiên trong cuộc thảo luận của chúng ta về cách kết thúc một vòng lặp trong Python. Chúng ta có thể định nghĩa một iterable để lặp lại với bất kỳ cấu trúc dữ liệu nào được đề cập ở trên. Ngoài ra, chúng ta cũng có thể sử dụng phạm vi tích hợp sẵn [], trả về một chuỗi bất biến. Đối với một số bài tập thực tế sử dụng các chức năng tích hợp, hãy xem khóa học này

>>> for i in range[5]:
>>>     if i == 3:
>>>         break
>>>     print[i]
>>> print['Finished']
0
1
2
Finished
5 chấp nhận 3 đối số nguyên. bắt đầu [tùy chọn, mặc định 0], dừng [bắt buộc] và bước [tùy chọn, mặc định 1]. Nó trả về một chuỗi với số phần tử được xác định trước

Chúng ta có thể lặp qua các phần tử theo trình tự như sau

>>> for i in range[-2, 11, 3]:
>>>     print[i]
-2
1
4
7
10

Có một vài điều thú vị về ví dụ này. Đầu tiên, các đối số có thể là tiêu cực. Bạn thậm chí có thể chỉ định một bước âm để đếm ngược. tự mình thử nó xem. Thứ hai, không bắt buộc phải đạt đến giá trị dừng chính xác. Trong ví dụ trên, chúng tôi tiến hành theo trình tự bắt đầu từ -2, thực hiện các bước của 3 và sau đó chúng tôi dừng ở 10. Đây là trước giá trị dừng được xác định là 11, nhưng một bước bổ sung là 3 sẽ đưa chúng ta vượt qua giá trị dừng. Đây là cách rõ ràng nhất để kết thúc một vòng lặp trong Python – sau một số lần lặp được xác định trước

Nếu bạn muốn lặp lại một số dữ liệu, có một giải pháp thay thế cho vòng lặp for sử dụng các hàm tích hợp sẵn

>>> for i in range[5]:
>>>     if i == 3:
>>>         break
>>>     print[i]
>>> print['Finished']
0
1
2
Finished
6 và
>>> for i in range[5]:
>>>     if i == 3:
>>>         break
>>>     print[i]
>>> print['Finished']
0
1
2
Finished
7. Cái đầu tiên xác định một trình lặp từ một lần lặp và cái sau trả về phần tử tiếp theo của trình vòng lặp. Vòng lặp hoặc phép lặp kết thúc khi chúng ta trả về phần tử cuối cùng từ trình lặp. Gọi
>>> for i in range[5]:
>>>     if i == 3:
>>>         break
>>>     print[i]
>>> print['Finished']
0
1
2
Finished
7 sau đó làm tăng ngoại lệ
>>> for i in range[5]:
>>>     if i == 3:
>>>         break
>>>     print[i]
>>> print['Finished']
0
1
2
Finished
1. Bạn chỉ có thể lặp lại một lần với các chức năng này vì khả năng lặp lại không được lưu trữ trong bộ nhớ, nhưng phương pháp này hiệu quả hơn nhiều khi xử lý một lượng lớn dữ liệu. Nếu bạn muốn xem một số ví dụ cụ thể về cách áp dụng hai hàm này để lặp hiệu quả, hãy xem bài viết này

Câu lệnh điều khiển vòng lặp

nghỉ

Câu lệnh break là câu lệnh đầu tiên trong ba câu lệnh điều khiển vòng lặp trong Python. Nó được sử dụng cùng với các câu điều kiện [if-elif-else] để kết thúc vòng lặp sớm nếu một số điều kiện được đáp ứng. Cụ thể, câu lệnh break cung cấp một cách để thoát khỏi vòng lặp hoàn toàn trước khi quá trình lặp kết thúc. Ví dụ sau minh họa hành vi này

>>> for i in range[5]:
>>>     if i == 3:
>>>         break
>>>     print[i]
>>> print['Finished']
0
1
2
Finished

Chúng tôi sử dụng

>>> for i in range[5]:
>>>     if i == 3:
>>>         break
>>>     print[i]
>>> print['Finished']
0
1
2
Finished
5 bằng cách chỉ xác định đối số dừng bắt buộc. Trong trường hợp này, các đối số start và step lần lượt có giá trị mặc định là 0 và 1. Chỉ cần lặp qua
>>> for i in range[5]:
>>>     if i == 3:
>>>         break
>>>     print[i]
>>> print['Finished']
0
1
2
Finished
3 sẽ in ra các giá trị 0 – 4. Thay vào đó, chúng tôi kiểm tra xem phần tử có bằng 3 hay không và nếu có, câu lệnh break sẽ dừng hoàn toàn vòng lặp. Dòng cuối cùng,
>>> for i in range[5]:
>>>     if i == 3:
>>>         break
>>>     print[i]
>>> print['Finished']
0
1
2
Finished
4 nằm ngoài vòng lặp và do đó vẫn được thực thi sau khi vòng lặp bị hỏng

tiếp tục

Tương phản điều này với câu lệnh continue, như được hiển thị bên dưới

>>> for i in range[5]:
>>>     if i==3:
>>>         continue
>>>     print[i]
>>> print['Finished']
0
1
2
4
Finished

Khi điều kiện ở dòng thứ hai được đánh giá là True, câu lệnh

>>> for i in range[5]:
>>>     if i == 3:
>>>         break
>>>     print[i]
>>> print['Finished']
0
1
2
Finished
5 sẽ bỏ qua câu lệnh
>>> for i in range[5]:
>>>     if i == 3:
>>>         break
>>>     print[i]
>>> print['Finished']
0
1
2
Finished
6 bên trong vòng lặp. Sau đó, nó tiếp tục vòng lặp ở phần tử tiếp theo. Vòng lặp kết thúc khi đến phần tử cuối cùng. Điều này rất hữu ích nếu bạn muốn vòng lặp của mình hoàn thành nhưng chỉ muốn bỏ qua một số phần tử. Và như đã thấy ở trên, bất kỳ mã nào bên dưới và bên ngoài vòng lặp vẫn được thực thi

đi qua

Câu lệnh điều khiển vòng lặp thứ ba là

>>> for i in range[5]:
>>>     if i == 3:
>>>         break
>>>     print[i]
>>> print['Finished']
0
1
2
Finished
7. Nói một cách chính xác, đây không phải là cách để thoát khỏi vòng lặp trong Python. Tuy nhiên, nó đáng được đề cập vì nó thường xuất hiện trong các ngữ cảnh tương tự như các câu lệnh điều khiển khác. Hãy thử ví dụ trên với câu lệnh vượt qua thay vì
>>> for i in range[5]:
>>>     if i == 3:
>>>         break
>>>     print[i]
>>> print['Finished']
0
1
2
Finished
5 và bạn sẽ nhận thấy tất cả các phần tử được xác định bởi
>>> for i in range[5]:
>>>     if i == 3:
>>>         break
>>>     print[i]
>>> print['Finished']
0
1
2
Finished
5 đều được in ra màn hình. Câu lệnh vượt qua đóng vai trò là trình giữ chỗ cho mã mà bạn có thể muốn thêm sau này vào vị trí của nó

Tiến tới Lối thoát khẩn cấp trong Python

Các tính năng chúng ta đã thấy cho đến nay minh họa cách thoát khỏi vòng lặp trong Python. Nếu bạn muốn thoát hoàn toàn một chương trình trước khi kết thúc, mô-đun sys cung cấp chức năng đó với chức năng

>>> for i in range[5]:
>>>     if i==3:
>>>         continue
>>>     print[i]
>>> print['Finished']
0
1
2
4
Finished
0. Gọi hàm này sẽ tạo ra một ngoại lệ
>>> for i in range[5]:
>>>     if i==3:
>>>         continue
>>>     print[i]
>>> print['Finished']
0
1
2
4
Finished
1 và chấm dứt toàn bộ chương trình

>>> for i in range[5]:
>>>     if i==3:
>>>         continue
>>>     print[i]
>>> print['Finished']
0
1
2
4
Finished
2 chấp nhận một đối số tùy chọn. Nó có thể là một số nguyên hoặc một chuỗi, có thể được sử dụng để in thông báo lỗi ra màn hình

Hãy xem một ví dụ

>>> for i in range[5]:
>>>     if i == 3:
>>>         break
>>>     print[i]
>>> print['Finished']
0
1
2
Finished
3

Trong bối cảnh này,

>>> for i in range[5]:
>>>     if i==3:
>>>         continue
>>>     print[i]
>>> print['Finished']
0
1
2
4
Finished
2 hoạt động tương tự như vi phạm trong ví dụ trước, nhưng cũng đưa ra một ngoại lệ. Kết quả là câu lệnh in cuối cùng bên ngoài vòng lặp for không được thực thi trong ví dụ này. Toàn bộ chương trình chỉ đơn giản là kết thúc

Vòng qua danh sách

Một hoạt động phổ biến để thực hiện trong một vòng lặp là sửa đổi cấu trúc dữ liệu, chẳng hạn như danh sách. Nếu bạn muốn xóa một phần tử khỏi danh sách trong một vòng lặp, bạn có thể thấy mình đang tìm đến từ khóa del, đặc biệt nếu bạn có nền tảng về các ngôn ngữ lập trình khác như C++ hoặc Java

Đây có thể là một công cụ hữu ích vì nó có thể xóa các phần tử khỏi cấu trúc dữ liệu cũng như xóa các biến cục bộ hoặc toàn cục. Nhưng nó có thể hơi phức tạp nếu bạn đang thay đổi một danh sách trong khi lặp lại nó

Xem xét ví dụ sau, nơi chúng tôi muốn xóa tất cả các số lẻ khỏi danh sách các số

>>> for i in range[5]:
>>>     if i == 3:
>>>         break
>>>     print[i]
>>> print['Finished']
0
1
2
Finished
5

Thực thi mã này sẽ tạo ra

>>> for i in range[5]:
>>>     if i==3:
>>>         continue
>>>     print[i]
>>> print['Finished']
0
1
2
4
Finished
4. Chúng tôi đã xác định vòng lặp của mình để thực hiện trong 7 lần lặp [độ dài của danh sách]. Vì chúng tôi đã xác định điều này với
>>> for i in range[5]:
>>>     if i == 3:
>>>         break
>>>     print[i]
>>> print['Finished']
0
1
2
Finished
5, nên nó là bất biến. Trong vòng lặp, chúng tôi bắt đầu xóa các phần tử khỏi danh sách, điều này sẽ thay đổi độ dài của nó. Bây giờ nó có ít phần tử hơn trình tự mà chúng tôi muốn lặp lại. Hơn nữa, nếu bạn dành một chút thời gian để xem xét ví dụ, bạn sẽ thấy số 1 thứ hai sẽ không bị xóa vì nó trượt xuống vị trí 0 trong khi vòng lặp chuyển đến vị trí có chỉ số 1

Để khắc phục tất cả những điều này, chúng ta có thể sử dụng một thủ thuật thông minh để lặp lại các phần tử theo thứ tự ngược lại, sử dụng hàm có sẵn

>>> for i in range[5]:
>>>     if i==3:
>>>         continue
>>>     print[i]
>>> print['Finished']
0
1
2
4
Finished
6

>>> for i in range[5]:
>>>     if i == 3:
>>>         break
>>>     print[i]
>>> print['Finished']
0
1
2
Finished
8

Hàm

>>> for i in range[5]:
>>>     if i==3:
>>>         continue
>>>     print[i]
>>> print['Finished']
0
1
2
4
Finished
6 trả về một trình vòng lặp mà chúng tôi đã đề cập trước đó trong bài viết. Ngoài ra, bạn có thể sử dụng
>>> for i in range[5]:
>>>     if i == 3:
>>>         break
>>>     print[i]
>>> print['Finished']
0
1
2
Finished
5 để đếm ngược trong quá trình lặp lại như chúng tôi đã lưu ý trước đó. Các phương thức này loại bỏ các phần tử khỏi cuối danh sách, đảm bảo chỉ mục danh sách hiện tại không bao giờ lớn hơn độ dài của danh sách

Hoặc thậm chí tốt hơn, chúng ta có thể sử dụng cách tiếp cận Pythonic nhất, cách hiểu danh sách, có thể được triển khai như sau

>>> for i in range[5]:
>>>     if i == 3:
>>>         break
>>>     print[i]
>>> print['Finished']
0
1
2
Finished
0

Đối với những bạn chưa từng thấy loại phép thuật này trước đây, nó tương đương với việc xác định danh sách, sử dụng vòng lặp for, kiểm tra điều kiện và thêm vào danh sách. Thông thường, điều này sẽ mất 4 dòng. Nhưng với cách hiểu danh sách, chúng tôi đạt được điều này chỉ trong một

Nhận thêm quyền kiểm soát và kết thúc vòng lặp trong Python

Cuộc thảo luận này đã tập trung vào cách thoát khỏi vòng lặp trong Python – cụ thể là cách thoát khỏi vòng lặp for trong Python. Chúng tôi muốn khuyến khích bạn thực hiện bước tiếp theo và áp dụng những gì bạn đã học được ở đây

Như chúng tôi đã nói trước đây, hãy bắt đầu bằng cách thực hiện các bước nhỏ và tiến tới các ví dụ phức tạp hơn. Hãy thử trải nghiệm với

>>> for i in range[5]:
>>>     if i==3:
>>>         continue
>>>     print[i]
>>> print['Finished']
0
1
2
4
Finished
9 vòng lặp. Bạn có thể khám phá ra rằng có một cách cơ bản hơn để thoát khỏi vòng lặp
>>> for i in range[5]:
>>>     if i==3:
>>>         continue
>>>     print[i]
>>> print['Finished']
0
1
2
4
Finished
9 mà không áp dụng cho vòng lặp for – khi điều kiện được xác định bởi câu lệnh
>>> for i in range[5]:
>>>     if i==3:
>>>         continue
>>>     print[i]
>>> print['Finished']
0
1
2
4
Finished
9 có giá trị là
>>> for i in range[5]:
>>>     if i == 3:
>>>         break
>>>     print[i]
>>> print['Finished']
0
1
2
Finished
32

Là một tiện ích mở rộng khác, hãy kiểm tra xem điều gì sẽ xảy ra khi bạn sử dụng các vòng lặp for lồng nhau với các câu lệnh điều khiển. Bạn sẽ thấy mình có thể sửa đổi một vòng lặp, trong khi vòng lặp khác tiếp tục thực hiện bình thường. Với một chút luyện tập, bạn sẽ thành thạo cách kiểm soát cách kết thúc một vòng lặp trong Python

Chủ Đề