Hướng dẫn conditional statement python - câu lệnh điều kiện python
Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Các tuyên bố có điều kiện trong Python (nếu/Elif/Else) This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Conditional Statements in Python (if/elif/else) Show Nội phân chính
Từ các hướng dẫn trước đây trong loạt bài này, giờ đây bạn có khá nhiều mã python trong vành đai của bạn. Tất cả mọi thứ bạn đã thấy cho đến nay đều bao gồm thực thi tuần tự, trong đó các câu lệnh luôn được thực hiện sau lần tiếp theo, theo chính xác thứ tự được chỉ định.sequential execution, in which statements are always performed one after the next, in exactly the order specified. Nhưng thế giới thường phức tạp hơn thế. Thông thường, một chương trình cần bỏ qua một số câu lệnh, thực hiện một loạt các câu lệnh lặp đi lặp lại hoặc chọn giữa các bộ câu lệnh thay thế để thực thi. Đó là nơi các cấu trúc điều khiển xuất hiện. Một cấu trúc điều khiển chỉ đạo thứ tự thực hiện các câu lệnh trong một chương trình (được gọi là luồng điều khiển của chương trình).control structures come in. A control structure directs the order of execution of the statements in a program (referred to as the program’s control flow). Tại đây, những gì bạn sẽ học được trong hướng dẫn này: Bạn sẽ gặp phải cấu trúc điều khiển Python đầu tiên của mình, câu lệnh 0 statement.Trong thế giới thực, chúng ta thường phải đánh giá thông tin xung quanh chúng ta và sau đó chọn một hành động này hay hành động khác dựa trên những gì chúng ta quan sát:
Trong một chương trình Python, tuyên bố 0 là cách bạn thực hiện loại quyết định này. Nó cho phép thực hiện có điều kiện của một câu lệnh hoặc nhóm các câu lệnh dựa trên giá trị của một biểu thức.conditional execution of a statement or group of statements based on the value of an expression.Đề cương của hướng dẫn này như sau:
Sẳn sàng? Ở đây chúng tôi đi! Giới thiệu về câu lệnh IFChúng tôi sẽ bắt đầu bằng cách xem xét loại câu lệnh 0 cơ bản nhất. Ở dạng đơn giản nhất, có vẻ như sau:Trong biểu mẫu hiển thị ở trên:
Nếu 5 là đúng (đánh giá theo giá trị đó là sự thật của Hồi giáo), thì 6 được thực thi. Nếu 5 là sai, thì 6 sẽ bị bỏ qua và không được thực thi.Lưu ý rằng đại tràng ( 1) sau 5 là bắt buộc. Một số ngôn ngữ lập trình yêu cầu 5 phải được đặt trong ngoặc đơn, nhưng Python thì không.Dưới đây là một số ví dụ về loại tuyên bố 0 này:>>>
Báo cáo nhóm: thụt và khốiCàng xa càng tốt. Nhưng hãy để nói rằng bạn muốn đánh giá một điều kiện và sau đó làm nhiều hơn một điều nếu đó là sự thật:
Trong tất cả các ví dụ được hiển thị ở trên, mỗi 5 chỉ được theo sau bởi một 6. Cần phải có một số cách để nói rằng nếu 5 là đúng, hãy làm tất cả những điều sau đây.Cách tiếp cận thông thường được thực hiện bởi hầu hết các ngôn ngữ lập trình là xác định một thiết bị cú pháp nhóm nhiều câu lệnh thành một câu lệnh hoặc khối. Một khối được coi là cú pháp như một thực thể duy nhất. Khi đó là mục tiêu của câu lệnh 0 và 5 là đúng, thì tất cả các câu lệnh trong khối được thực thi. Nếu 5 là sai, thì không ai trong số họ là.compound statement or block. A block is regarded syntactically as a single entity. When it is the target of an 0 statement, and 5 is true, then all the statements in the block are executed. If 5 is false, then none of them are.Hầu như tất cả các ngôn ngữ lập trình đều cung cấp khả năng xác định các khối, nhưng tất cả chúng đều cung cấp nó theo cùng một cách. Hãy để xem Python làm như thế nào. Python: Nó tất cả về thụt lềPython tuân theo một hội nghị được gọi là quy tắc ngoài bên, một thuật ngữ được đặt ra bởi nhà khoa học máy tính người Anh Peter J. Landin. . Python là một trong những ngôn ngữ quy tắc bên ngoài tương đối nhỏ. Nhớ lại từ hướng dẫn trước đây về cấu trúc chương trình Python mà thụt có ý nghĩa đặc biệt trong chương trình Python. Bây giờ bạn biết tại sao: thụt lề được sử dụng để xác định các câu lệnh hoặc khối hợp chất. Trong một chương trình Python, các tuyên bố liền kề được thụt vào cùng cấp độ được coi là một phần của cùng một khối. Do đó, một tuyên bố hợp chất ____30 trong Python trông như thế này:
Ở đây, tất cả các câu lệnh ở cấp độ thụt khớp (dòng 2 đến 5) được coi là một phần của cùng một khối. Toàn bộ khối được thực thi nếu 5 là đúng hoặc bỏ qua nếu 5 là sai. Dù bằng cách nào, việc thực hiện tiến hành với 4 (dòng 6) sau đó.Lưu ý rằng không có mã thông báo biểu thị kết thúc của khối. Thay vào đó, phần cuối của khối được biểu thị bằng một dòng được thụt vào ít hơn các dòng của chính khối. Xem xét tệp tập lệnh này 5:
Chạy 5 tạo ra đầu ra này:
Bốn câu 7 trên các dòng 2 đến 5 được thụt vào cùng cấp độ với nhau. Chúng tạo thành khối sẽ được thực thi nếu điều kiện là đúng. Nhưng nó là sai, vì vậy tất cả các câu trong khối đều bị bỏ qua. Sau khi kết thúc câu lệnh hợp chất 0 đã đạt được (cho dù các câu lệnh trong khối trên các dòng 2 đến 5 có được thực thi hay không), việc thực hiện tiến hành câu lệnh đầu tiên có mức thụt nhẹ hơn: câu lệnh 7 trên dòng 6.Các khối có thể được lồng đến độ sâu tùy ý. Mỗi thụt lề xác định một khối mới và mỗi khối kết thúc khối trước. Cấu trúc kết quả là đơn giản, nhất quán và trực quan. Dưới đây là một tệp tập lệnh phức tạp hơn được gọi là 0:
Đầu ra được tạo khi tập lệnh này được chạy được hiển thị bên dưới:
Các ngôn ngữ khác làm gì?Có lẽ bạn tò mò những gì các lựa chọn thay thế là gì. Làm thế nào các khối được xác định bằng các ngôn ngữ mà don lồng tuân thủ quy tắc ngoài bên? Chiến thuật được sử dụng bởi hầu hết các ngôn ngữ lập trình là chỉ định các mã thông báo đặc biệt đánh dấu sự khởi đầu và kết thúc của một khối. Ví dụ, trong các khối perl được xác định với các cặp niềng răng xoăn ( 1) như thế này:
C/C ++, Java và một loạt các ngôn ngữ khác sử dụng niềng răng xoăn theo cách này. Hợp chất IF Tuyên bố trong C/C ++, Perl và JavaCác ngôn ngữ khác, chẳng hạn như Algol và Pascal, sử dụng các từ khóa 2 và 3 để kèm theo các khối.Cái nào tốt hơn?Tốt hơn là trong mắt của người xử lý. Nhìn chung, các lập trình viên có xu hướng cảm thấy khá mạnh mẽ về cách họ làm mọi thứ. Tranh luận về giá trị của quy tắc ngoài bên có thể chạy khá nóng. Về mặt tích cực:
Về mặt tiêu cực:
Dù muốn hay không, nếu bạn lập trình trong Python, bạn sẽ bị mắc kẹt với quy tắc ngoài mặt. Tất cả các cấu trúc kiểm soát trong Python sử dụng nó, như bạn sẽ thấy trong một số hướng dẫn trong tương lai. Đối với những gì nó có giá trị, nhiều lập trình viên đã quen với các ngôn ngữ có phương tiện định nghĩa khối truyền thống hơn ban đầu đã bị thu hồi theo cách Python, nhưng đã thoải mái với nó và thậm chí còn phát triển để thích nó. Các điều khoản khác và ElifBây giờ bạn đã biết cách sử dụng câu lệnh 0 để thực hiện có điều kiện một câu lệnh hoặc một khối của một số câu lệnh. Đó là thời gian để tìm hiểu những gì bạn có thể làm.Đôi khi, bạn muốn đánh giá một điều kiện và đi một đường dẫn nếu đó là sự thật nhưng chỉ định một đường dẫn thay thế nếu không. Điều này được thực hiện với một điều khoản 5:
Nếu 5 là đúng, bộ đầu tiên được thực thi và lần thứ hai bị bỏ qua. Nếu 5 là sai, bộ đầu tiên bị bỏ qua và lần thứ hai được thực thi. Dù bằng cách nào, thực thi sau đó lại tiếp tục sau bộ thứ hai. Cả hai bộ được xác định bằng vết lõm, như mô tả ở trên.Trong ví dụ này, 8 nhỏ hơn 9, do đó bộ đầu tiên (dòng 4 đến 5) được thực thi và bộ thứ hai (dòng 7 đến 8) bị bỏ qua:>>>
Mặt khác, ở đây, 8 lớn hơn 9, do đó bộ đầu tiên được chuyển qua và bộ thứ hai được thực hiện:>>>
Ngoài ra còn có cú pháp để thực hiện phân nhánh dựa trên một số lựa chọn thay thế. Đối với điều này, sử dụng một hoặc nhiều 2 (viết tắt của các điều khác nếu) các điều khoản. Python lần lượt đánh giá từng 5 và thực thi bộ tương ứng với lần đầu tiên là đúng. Nếu không có biểu thức nào là đúng và mệnh đề 5 được chỉ định, thì bộ của nó được thực thi: 0Một số lượng tùy ý của các mệnh đề 2 có thể được chỉ định. Điều khoản 5 là tùy chọn. Nếu nó có mặt, chỉ có thể có một, và nó phải được chỉ định cuối cùng:>>> 1Nhiều nhất, một trong các khối mã được chỉ định sẽ được thực thi. Nếu một điều khoản 5 được bao gồm và tất cả các điều kiện là sai, thì không có khối nào sẽ được thực thi.Một tuyên bố 0 với các điều khoản 2 sử dụng đánh giá ngắn mạch, tương tự như những gì bạn đã thấy với các toán tử 0 và 1. Khi một trong các biểu thức được tìm thấy là đúng và khối của nó được thực thi, không có biểu thức nào còn lại được kiểm tra. Điều này được thể hiện dưới đây:>>> 2Biểu thức thứ hai chứa một bộ phận theo 0 và lần thứ ba tham chiếu một biến không xác định 2. Hoặc là sẽ gây ra lỗi, nhưng không được đánh giá vì điều kiện đầu tiên được chỉ định là đúng.Một dòng nếu câu lệnhĐó là thông lệ để viết 3 trên một dòng và 6 được thụt vào dòng sau như sau:Nhưng được phép viết toàn bộ câu lệnh 0 trên một dòng. Sau đây có chức năng tương đương với ví dụ trên:Thậm chí có thể có nhiều hơn một 6 trên cùng một dòng, được phân tách bằng dấu chấm phẩy: 3Nhưng nó có nghĩa gì? Có hai cách giải thích có thể:
Python lấy cách giải thích sau. Bán kết ngăn cách 3 có mức độ ưu tiên cao hơn so với đại tràng sau ____ 35, trong biệt ngữ máy tính, dấu chấm phẩy được cho là liên kết chặt chẽ hơn đại tràng. Do đó, 3 được coi là một bộ, và tất cả chúng đều được thực thi, hoặc không ai trong số họ là:>>> 4Nhiều câu lệnh có thể được chỉ định trên cùng một dòng với mệnh đề 2 hoặc 5:>>> 5Mặc dù tất cả những điều này hoạt động, và thông dịch viên cho phép nó, nhưng nó thường không được khuyến khích với lý do nó dẫn đến khả năng đọc kém, đặc biệt là đối với các tuyên bố 0 phức tạp. PEP 8 đặc biệt khuyến nghị chống lại nó.Như thường lệ, nó có phần là một vấn đề của hương vị. Hầu hết mọi người sẽ tìm thấy những điều sau đây hấp dẫn hơn và dễ hiểu hơn ngay từ cái nhìn đầu tiên so với ví dụ trên: >>> 6Tuy nhiên, nếu một tuyên bố 0 đủ đơn giản, việc đặt tất cả trên một dòng có thể là hợp lý. Một cái gì đó như thế này có lẽ sẽ nâng cao bất cứ ai bị hack quá nhiều: 7Biểu thức có điều kiện (Toán tử ternary Python)Python hỗ trợ một thực thể ra quyết định bổ sung được gọi là biểu thức có điều kiện. . Ở dạng đơn giản nhất, cú pháp của biểu thức có điều kiện như sau: 8Điều này khác với các mẫu câu lệnh 0 được liệt kê ở trên vì nó không phải là cấu trúc điều khiển chỉ đạo dòng thực hiện chương trình. Nó hoạt động giống như một toán tử xác định một biểu thức. Trong ví dụ trên, 01 được đánh giá trước. Nếu đó là sự thật, biểu thức sẽ đánh giá thành 02. Nếu là sai, biểu thức sẽ đánh giá thành 03.Lưu ý thứ tự không rõ ràng: Biểu thức giữa được đánh giá trước và dựa trên kết quả đó, một trong các biểu thức ở đầu được trả về. Dưới đây là một số ví dụ hy vọng sẽ giúp làm rõ: >>> 9Một cách sử dụng phổ biến của biểu thức có điều kiện là chọn gán biến. Ví dụ, giả sử bạn muốn tìm thấy hai số lớn hơn. Tất nhiên, có một chức năng tích hợp, 04, đó chỉ là điều này (và hơn thế nữa) mà bạn có thể sử dụng. Nhưng giả sử bạn muốn viết mã của riêng bạn từ đầu.Bạn có thể sử dụng câu lệnh 0 tiêu chuẩn với mệnh đề 5:>>> 0Nhưng một biểu thức có điều kiện ngắn hơn và cũng dễ đọc hơn: >>> 1Hãy nhớ rằng biểu thức có điều kiện hoạt động giống như một biểu thức cú pháp. Nó có thể được sử dụng như một phần của một biểu thức dài hơn. Biểu thức có điều kiện có mức độ ưu tiên thấp hơn hầu như tất cả các toán tử khác, do đó, dấu ngoặc đơn là cần thiết để tự nhóm nó. Trong ví dụ sau, toán tử 07 liên kết chặt chẽ hơn biểu thức có điều kiện, do đó 08 và 09 được đánh giá trước, sau đó là biểu thức có điều kiện. Các dấu ngoặc đơn trong trường hợp thứ hai là không cần thiết và không thay đổi kết quả:>>> 2Nếu bạn muốn biểu thức có điều kiện được đánh giá trước, bạn cần bao quanh nó với các dấu ngoặc đơn. Trong ví dụ tiếp theo, 10 được đánh giá trước. Kết quả là 11, đó là 12, do đó 13 được gán 14 = 15:>>> 3Nếu bạn đang sử dụng một biểu thức có điều kiện như là một phần của biểu thức lớn hơn, có lẽ nên sử dụng các dấu ngoặc đơn để làm rõ ngay cả khi chúng không cần thiết. Biểu thức có điều kiện cũng sử dụng đánh giá ngắn mạch như biểu thức hợp chất. Các phần của một biểu thức có điều kiện không được đánh giá nếu chúng không cần phải có. Trong biểu thức 16:
Như trước đây, bạn có thể xác minh điều này bằng cách sử dụng các thuật ngữ sẽ gây ra lỗi: >>> 4Trong cả hai trường hợp, các điều khoản 23 không được đánh giá, vì vậy không có ngoại lệ nào được nêu ra.Các biểu thức có điều kiện cũng có thể được xích lại với nhau, như một loại thay thế ____ 30/________ 72/________ 65, như thể hiện ở đây: >>> 5Nó không rõ ràng rằng điều này có bất kỳ lợi thế đáng kể nào so với câu lệnh tương ứng ____ 30/________ 72/________ 65, nhưng nó là Python chính xác về mặt cú pháp. Tuyên bố Python PassThỉnh thoảng, bạn có thể thấy rằng bạn muốn viết cái được gọi là sơ khai mã: một trình giữ chỗ cho nơi cuối cùng bạn sẽ đặt một khối mã mà bạn đã thực hiện. Trong các ngôn ngữ nơi các dấu phân cách mã thông báo được sử dụng để xác định các khối, như niềng răng xoăn trong Perl và C, các trình phân cách trống có thể được sử dụng để xác định cuống mã. Ví dụ: sau đây là mã Perl hoặc C hợp pháp: C: 6Ở đây, niềng răng xoăn trống xác định một khối trống. Perl hoặc C sẽ đánh giá biểu thức 8, và sau đó ngay cả khi đó là sự thật, lặng lẽ không làm gì cả.Bởi vì Python sử dụng thụt lề thay vì các dấu phân cách, nên không thể chỉ định một khối trống. Nếu bạn giới thiệu một câu lệnh 0 với 5, một cái gì đó phải đến sau nó, trên cùng một dòng hoặc được thụt vào dòng sau.Hãy xem xét tập lệnh này 5:Nếu bạn cố gắng chạy 5, bạn sẽ nhận được điều này: 7Tuyên bố Python 35 giải quyết vấn đề này. Nó không thay đổi hành vi chương trình. Nó được sử dụng như một người giữ chỗ để giữ cho thông dịch viên hạnh phúc trong mọi tình huống mà một tuyên bố được yêu cầu về mặt cú pháp, nhưng bạn không thực sự muốn làm bất cứ điều gì: 8Bây giờ 5 chạy mà không có lỗi: 9Sự kết luậnVới việc hoàn thành hướng dẫn này, bạn bắt đầu viết mã Python vượt xa thực thi tuần tự đơn giản:
Tất cả các khái niệm này là rất quan trọng để phát triển mã Python phức tạp hơn. Hai hướng dẫn tiếp theo sẽ trình bày hai cấu trúc điều khiển mới: Tuyên bố 38 và câu lệnh 39. Các cấu trúc này tạo điều kiện lặp lại, thực hiện một tuyên bố hoặc khối các câu lệnh nhiều lần. 38
statement and the 39 statement. These structures facilitate iteration, execution of a statement or block of statements repeatedly.Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Các tuyên bố có điều kiện trong Python (nếu/Elif/Else) This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Conditional Statements in Python (if/elif/else) |