Các câu lệnh ngắt, vượt qua và tiếp tục được cung cấp trong Python để xử lý các trường hợp bạn cần thoát hoàn toàn vòng lặp khi một điều kiện bên ngoài được kích hoạt hoặc khi bạn muốn bỏ qua một phần của vòng lặp và bắt đầu lần lặp tiếp theo. Những câu lệnh này cũng có thể giúp bạn kiểm soát tốt hơn vòng lặp của mình
Phạm vi
- Trong bài viết này, chúng ta sẽ tìm hiểu về câu lệnh break, pass và continue với cú pháp, trường hợp sử dụng và các ví dụ phù hợp
- Chúng ta cũng sẽ xem xét chức năng của các câu lệnh ngắt, vượt qua và tiếp tục với sự trợ giúp của các biểu đồ và sơ đồ dòng chảy thích hợp
Tuyên bố ngắt trong Python
Python cung cấp cho chúng ta một tuyên bố mục đích cụ thể – break. Điều đáng chú ý là câu lệnh break chỉ có thể được sử dụng trong vòng lặp for và while. Khi chương trình gặp câu lệnh break, nó sẽ kết thúc vòng lặp ngay lập tức và các dòng mã được viết ngay sau phần thân của vòng lặp tiếp tục thực thi
Câu lệnh break sẽ khiến vòng lặp kết thúc ngay cả khi điều kiện của vòng lặp while ước tính là True hoặc trong trường hợp vòng lặp for. Nó sẽ khiến điều khiển của chương trình nhảy ra khỏi vòng lặp for ngay cả khi nó thỏa mãn điều kiện
Một ví dụ điển hình về thời điểm sử dụng câu lệnh ngắt là trong quá trình tìm kiếm tuần tự. Ví dụ: bạn đang tìm kiếm một phần tử trong danh sách các phần tử bằng cách sử dụng vòng lặp for. Bạn sẽ thêm vào một điều kiện so sánh, để kiểm tra xem phần tử có được tìm thấy hay không. Nếu phần tử được tìm thấy, thì bạn sẽ thoát khỏi vòng lặp mà không duyệt qua các phần tử còn lại
Dưới đây là sơ đồ về cách thức hoạt động của câu lệnh ngắt để giúp bạn hiểu rõ hơn
Cú pháp câu lệnh Break trong Python
Cú pháp khá đơn giản, bạn chỉ cần nhập từ khóa break khi muốn vòng lặp kết thúc. Hãy xem xét một số mã giả
Triển khai câu lệnh Break trong Python
Bây giờ chúng ta đã biết từ khóa break là gì, nó làm gì và cách sử dụng nó, chúng ta hãy xem thêm một số ví dụ
Giả sử chúng ta muốn viết một chương trình được thiết lập để in bảy mục đầu tiên trong danh sách, nhưng nếu nó gặp số '4', chúng ta cần thoát khỏi vòng lặp. Chúng ta có thể dễ dàng làm điều này bằng cách sử dụng câu lệnh break
Thí dụ
nums = [7, 2, 3, 1, 5, 4, 6, 8, 9] count = 0 while count < 7: print[nums[count]] count += 1 if nums[count] == 4: break print["End"]
đầu ra
Giải trình
Bây giờ trong chương trình này, chúng tôi đã thêm một điều kiện trong đó nếu chúng tôi gặp số 4, chúng tôi cần phải ngắt vòng lặp. Và vì chúng tôi gặp phải số 4, vòng lặp bị ngắt ngay lập tức
Nếu không có 4 thì sao?
Thí dụ
nums = [1, 2, 3, 5, 6, 7, 8, 9] count = 0 while count < 7: print[nums[count]] count += 1 if nums[count] == 4: break print["End"]
đầu ra
Do chương trình không gặp con 4 nào nên điều khiển không nhảy ra khỏi vòng lặp, vòng lặp tiếp tục chạy
Nếu câu lệnh break được sử dụng trong một vòng lặp lồng nhau thì sao? . Nếu nó được sử dụng trong chính vòng lặp ngoài cùng, nó sẽ thoát khỏi vòng lặp và di chuyển trực tiếp đến bất kỳ câu lệnh nào được viết bên ngoài vòng lặp và tiếp tục thực hiện chương trình
Thí dụ
l1 = [1, 2, 3] l2 = ['a', 'b', 'c'] for num in l1: for ch in l2: print[num, ch] if num == 2 and ch == 'b' : print['BREAK'] break
đầu ra
Đó là tất cả cho câu lệnh break
Truyền câu lệnh trong Python
Bây giờ hãy nói về việc không làm gì trong Python. Có vẻ kỳ quặc? . Không làm gì cả, đó là một tuyên bố khá hữu ích. Cú pháp của câu lệnh pass cũng giống như câu lệnh break
Tại sao chúng tôi sử dụng Tuyên bố vượt qua?
Để không làm gì bên trong một khối mã, bạn có thể sử dụng câu lệnh pass
Thí dụ
if 1 + 2 == 3: print["Correct math"] pass print["This will also be printed."]
đầu ra
Correct math This will also be printed.
Nhưng điều này không có vẻ hữu ích, phải không? . Tại sao cú pháp python có một câu lệnh yêu cầu trình thông dịch không làm gì cả?
Câu lệnh có thể được sử dụng để hoàn thành một vị trí trong một khối mã cần ít nhất 1 câu lệnh
Thí dụ
Bạn có đoạn mã này và bạn thực sự không biết tại thời điểm này, giá trị của a và b sẽ là bao nhiêu và bạn sẽ làm gì nếu điều kiện đánh giá là Đúng. Bạn muốn để trống phần thân, nhưng bạn không thể làm điều đó vì chỉ chạy đoạn mã này sẽ gây ra lỗi thụt đầu dòng cho bạn. Tại sao? . ], Python mong đợi một khối mã thụt vào, ngay cả khi đó là một dòng đơn hoặc một câu lệnh
Ở đây, chúng ta có thể sử dụng câu lệnh pass
Nhờ câu lệnh vượt qua, chúng tôi sẽ không nhận được bất kỳ lỗi nào
Có nhiều cách sử dụng câu lệnh vượt qua hơn, một số tạm thời và một số vĩnh viễn
Sử dụng tạm thời Tuyên bố vượt qua
Câu lệnh vượt qua có thể được sử dụng để điền mã ban đầu có thể được sử dụng trong tương lai. Nghe có vẻ ngớ ngẩn khi sử dụng câu lệnh pass trong các phần của mã mà sau này sẽ bị xóa, nhưng nó tỏ ra rất hữu ích trong giai đoạn phát triển ban đầu để phát triển nhanh hơn
Thí dụ
Giả sử bạn có một hàm để thực hiện một tác vụ gọi một hàm khác. Nhưng vấn đề ở đây là bạn không biết chức năng bạn đang gọi hoạt động như thế nào. Vì vậy, bạn sử dụng câu lệnh vượt qua
def fun1[args]: # some code fun2[]: # some more code return values def fun2[args2]: pass # TODO
Chức năng này, func2, hiện không làm bất cứ điều gì, nhưng nó cho phép bạn chạy và kiểm tra fun1 mà không có bất kỳ lỗi nào
Một trường hợp sử dụng khác cho câu lệnh pass là khi bạn chỉ muốn hiểu cấu trúc của mã trước khi đi vào phần phức tạp của nó
Thí dụ
Trong mã FizzBuzz [ một trò chơi mà bạn bắt đầu từ 1, đếm đến 100 và nói "Fizz", nếu số đó chia hết cho 3, "Buzz" nếu số đó chia hết cho 5 và "FizzBuzz" nếu số đó là
if num % 15: pass elif num % 3 : pass elif num % 5: pass else: pass
Điều này giúp bạn hiểu cấu trúc của mã trước khi bạn đi vào câu lệnh if -elif để hoàn thành mã
Đây là một vài cách sử dụng tạm thời của câu lệnh pass. Nó cũng có các trường hợp sử dụng vĩnh viễn như
Trong python, chúng ta sử dụng khối try… except để xử lý lỗi. Đôi khi, bạn có thể không muốn làm gì khi gặp lỗi. Trong trường hợp đó, bạn có thể sử dụng câu lệnh vượt qua. Để tôi chỉ cho bạn một ví dụ
def ensure_nonexistence[filename]: try: os.remove[filename] except FileNotFoundError: pass
Hàm này ở trên xóa tệp được đề cập và không bị lỗi nếu tệp không tồn tại. Nếu tệp bạn muốn xóa không tồn tại, bạn không cần làm gì cả. Vì vậy, khi FileNotFoundError được nâng lên, bạn chỉ cần sử dụng câu lệnh vượt qua
2. Nếu… Chuỗi Elif
Giả sử trong một cuộc phỏng vấn, bạn được hỏi một câu hỏi FizzBuzz cơ bản, ngoại trừ một chút thay đổi. Nếu số đầu vào chia hết cho 3, hãy in Fizz. Nếu chia hết cho 5 thì in Buzz. Nếu chia hết cho 15 thì không in, nếu chia hết cho 20 thì in Twist
________số 8_______Rõ ràng chúng ta có thể thấy rằng việc sử dụng câu lệnh pass cho phép bạn tránh phải cấu trúc lại logic. Bạn cũng có thể cấu trúc mã theo mô tả của nó
Continue cũng là một trong những câu lệnh điều khiển vòng lặp hữu ích trong python. Nó gần như ngược lại với câu lệnh break đã thảo luận ở trên. Break kết thúc vòng lặp và câu lệnh continue buộc chương trình thực hiện lần lặp tiếp theo của vòng lặp
Khi điều khiển chương trình gặp câu lệnh continue, đoạn mã sau câu lệnh continue [nếu có] sẽ bị bỏ qua và lần lặp tiếp theo của vòng lặp sẽ bắt đầu
Chúng ta có thể hiểu việc sử dụng câu lệnh continue với một ví dụ
for letter in 'python': if letter == 'o': continue print[letter]
Như chúng ta có thể thấy trong đoạn mã trên, đoạn mã sau câu lệnh continue không được thực thi, do đó bỏ qua câu lệnh in khi gặp chữ 'o'. Chúng tôi trực tiếp chuyển sang lần lặp tiếp theo của vòng lặp
Tất nhiên, đoạn mã trên có thể được viết theo nhiều cách khác mà không cần sử dụng câu lệnh continue. Hãy để chúng tôi hiểu tầm quan trọng của nó đối với khả năng đọc và cách nó giảm thời gian chạy tốn kém bằng một ví dụ
Bạn có hai danh sách, x và y. Bạn muốn zip [một hàm tạo ra một trình vòng lặp của một loạt các bộ dữ liệu] chúng và thực hiện một số hàm trên chúng tùy thuộc vào hai giá trị của a và b, thuộc về kết quả của zip
Đây là một số mã không có câu lệnh tiếp tục. Lưu ý cách nó trông ở khắp mọi nơi với các câu lệnh if lồng nhau, làm giảm khả năng đọc
0nums = [1, 2, 3, 5, 6, 7, 8, 9] count = 0 while count < 7: print[nums[count]] count += 1 if nums[count] == 4: break print["End"]
Bây giờ ở đây, các câu lệnh if lồng nhau có thể làm cho mã trông khó hiểu. Xem cách câu lệnh continue giúp làm cho mã này tốt hơn
Có vượt qua hàm thoát Python không?
Return thoát khỏi hàm hoặc phương thức hiện tại. Pass là một phép toán null và cho phép thực thi tiếp tục ở câu lệnh tiếp theo . Lưu câu trả lời này.Pass có kết thúc một chức năng không?
pass là lệnh "trống", nhưng return dừng hàm / phương thức .Điều gì kết thúc một chức năng trong Python?
Một câu lệnh trả về kết thúc một hàm một cách hiệu quả; .Pass có kết thúc vòng lặp không?
Như chúng ta thấy trong kết quả ở trên, câu lệnh pass thực sự không làm gì giống như vòng lặp for và tất cả các câu lệnh bên trong nó đều được thực thi. Câu lệnh pass thường được sử dụng trong khi tạo một phương thức mà chúng tôi không muốn sử dụng ngay bây giờ. Nó thường được sử dụng làm trình giữ chỗ cho mã trong tương lai.