Câu lệnh trong Python là gì

Từ các hướng dẫn trước trong loạt bài này, giờ đây bạn đã có khá nhiều mã Python cần thiết. Mọi thứ bạn đã thấy cho đến nay đều bao gồm việc thực thi tuần tự, trong đó các câu lệnh luôn được thực hiện nối tiếp nhau, theo đúng thứ tự đã chỉ định

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 lặp lại một loạt câu lệnh hoặc chọn giữa các nhóm 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. Cấu trúc điều khiển chỉ đạo thứ tự thực hiện các câu lệnh trong chương trình [được gọi là luồng điều khiển của chương trình]

Đây là những gì bạn sẽ học trong hướng dẫn này. Bạn sẽ bắt gặp cấu trúc điều khiển Python đầu tiên của mình, câu lệnh

 1if 'foo' in ['bar', 'baz', 'qux']:
 2    print['Expression was true']
 3    print['Executing statement in suite']
 4    print['...']
 5    print['Done.']
 6print['After conditional']
5

Trong thế giới thực, chúng ta thường phải đánh giá thông tin xung quanh mình và sau đó chọn cách hành động này hay cách khác dựa trên những gì chúng ta quan sát được.

Nếu thời tiết đẹp thì tôi sẽ cắt cỏ. [Ngụ ý rằng nếu thời tiết không đẹp thì tôi sẽ không cắt cỏ. ]

Trong một chương trình Python, câu lệnh

 1if 'foo' in ['bar', 'baz', 'qux']:
 2    print['Expression was true']
 3    print['Executing statement in suite']
 4    print['...']
 5    print['Done.']
 6print['After conditional']
5 là cách bạn thực hiện kiểu ra quyết định này. Nó cho phép thực thi có điều kiện một câu lệnh hoặc một nhóm câu lệnh dựa trên giá trị của một biểu thức

Các phác thảo của hướng dẫn này là như sau

  • Đầu tiên, bạn sẽ có cái nhìn tổng quan nhanh về câu lệnh
     1if 'foo' in ['bar', 'baz', 'qux']:
     2    print['Expression was true']
     3    print['Executing statement in suite']
     4    print['...']
     5    print['Done.']
     6print['After conditional']
    
    5 ở dạng đơn giản nhất
  • Tiếp theo, sử dụng câu lệnh
     1if 'foo' in ['bar', 'baz', 'qux']:
     2    print['Expression was true']
     3    print['Executing statement in suite']
     4    print['...']
     5    print['Done.']
     6print['After conditional']
    
    5 làm mẫu, bạn sẽ thấy tại sao các cấu trúc điều khiển yêu cầu một số cơ chế để nhóm các câu lệnh lại với nhau thành các câu lệnh hoặc khối phức hợp. Bạn sẽ học cách thực hiện điều này trong Python
  • Cuối cùng, bạn sẽ liên kết tất cả lại với nhau và học cách viết mã ra quyết định phức tạp

Sẳn sàng?

Lấy bài kiểm tra. Kiểm tra kiến ​​thức của bạn với bài kiểm tra tương tác “Câu lệnh có điều kiện Python” của chúng tôi. Sau khi hoàn thành, bạn sẽ nhận được điểm số để có thể theo dõi quá trình học tập của mình theo thời gian

Lấy bài kiểm tra "

Giới thiệu Tuyên bố
 1if 'foo' in ['bar', 'baz', 'qux']:
 2    print['Expression was true']
 3    print['Executing statement in suite']
 4    print['...']
 5    print['Done.']
 6print['After conditional']
5

Chúng ta sẽ bắt đầu bằng cách xem xét loại câu lệnh

 1if 'foo' in ['bar', 'baz', 'qux']:
 2    print['Expression was true']
 3    print['Executing statement in suite']
 4    print['...']
 5    print['Done.']
 6print['After conditional']
5 cơ bản nhất. Ở dạng đơn giản nhất, nó trông như thế này

if :
    

Ở dạng hiển thị ở trên

  • C:\Users\john\Documents>python foo.py
    After conditional
    
    1 là một biểu thức được đánh giá trong ngữ cảnh Boolean, như đã thảo luận trong phần trên trong hướng dẫn Toán tử và Biểu thức trong Python
  • C:\Users\john\Documents>python foo.py
    After conditional
    
    2 là một câu lệnh Python hợp lệ, phải được thụt vào. [Bạn sẽ thấy tại sao rất sớm. ]

Nếu

C:\Users\john\Documents>python foo.py
After conditional
1 là true [được đánh giá thành giá trị là “true”], thì
C:\Users\john\Documents>python foo.py
After conditional
2 được thực thi. Nếu
C:\Users\john\Documents>python foo.py
After conditional
1 là sai, thì
C:\Users\john\Documents>python foo.py
After conditional
2 sẽ bị bỏ qua và không được thực hiện

Lưu ý rằng dấu hai chấm [

C:\Users\john\Documents>python foo.py
After conditional
7] sau
C:\Users\john\Documents>python foo.py
After conditional
1 là bắt buộc. Một số ngôn ngữ lập trình yêu cầu
C:\Users\john\Documents>python foo.py
After conditional
1 đượ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ố

 1if 'foo' in ['bar', 'baz', 'qux']:
 2    print['Expression was true']
 3    print['Executing statement in suite']
 4    print['...']
 5    print['Done.']
 6print['After conditional']
5 này

>>>

>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...

Ghi chú. Nếu bạn đang thử các ví dụ này một cách tương tác trong phiên REPL, bạn sẽ thấy rằng khi bạn nhấn Enter sau khi nhập câu lệnh

# Does line execute?                        Yes    No
#                                           ---    --
if 'foo' in ['foo', 'bar', 'baz']:        #  x
    print['Outer condition is true']      #  x

    if 10 > 20:                           #  x
        print['Inner condition 1']        #        x

    print['Between inner conditions']     #  x

    if 10  20:                           #  x
        print['Inner condition 1']        #        x

    print['Between inner conditions']     #  x

    if 10 python foo.py
After conditional
2 duy nhất. Cần phải có cách nào đó để nói “Nếu
C:\Users\john\Documents>python foo.py
After conditional
1 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 phức hợp. Một khối được coi về mặt cú pháp như một thực thể duy nhất. Khi nó là mục tiêu của câu lệnh

 1if 'foo' in ['bar', 'baz', 'qux']:
 2    print['Expression was true']
 3    print['Executing statement in suite']
 4    print['...']
 5    print['Done.']
 6print['After conditional']
5 và
C:\Users\john\Documents>python foo.py
After conditional
1 là đúng, thì tất cả các câu lệnh trong khối được thực thi. Nếu
C:\Users\john\Documents>python foo.py
After conditional
1 là sai, thì không có cái nào đúng

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 không phải tất cả chúng đều cung cấp theo cùng một cách. Hãy xem cách Python làm điều đó

con trăn. Đó là tất cả về vết lõm

Python tuân theo một quy ước được gọi là quy tắc bên ngoài, một thuật ngữ được đặt ra bởi nhà khoa học máy tính người Anh Peter J. Landin. [Thuật ngữ này được lấy từ luật việt vị trong hiệp hội bóng đá. ] Các ngôn ngữ tuân thủ quy tắc bên ngoài xác định các khối bằng cách thụt đầu dòng. Python là một trong một tập hợp tương đối nhỏ

Nhớ lại từ hướng dẫn trước về cấu trúc chương trình Python mà trong một 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 ghép. Trong một chương trình Python, các câu lệnh liền kề được thụt vào cùng một mức được coi là một phần của cùng một khối

Do đó, một câu lệnh phức hợp

 1if 'foo' in ['bar', 'baz', 'qux']:
 2    print['Expression was true']
 3    print['Executing statement in suite']
 4    print['...']
 5    print['Done.']
 6print['After conditional']
5 trong Python trông như thế này

 1if :
 2    
 3    
 4    ...
 5    
 6

Ở đây, tất cả các câu lệnh ở mức thụt đầu dòng phù hợp [dòng 2 đến dòng 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

C:\Users\john\Documents>python foo.py
After conditional
1 là đúng hoặc bỏ qua nếu
C:\Users\john\Documents>python foo.py
After conditional
1 là sai. Dù bằng cách nào, quá trình thực thi vẫn tiếp tục với
C:\Users\john\Documents>python blocks.py
Outer condition is true
Between inner conditions
Inner condition 2
End of outer condition
After outer condition
1 [dòng 6] sau đó

Hợp chất Python if Tuyên bố

Lưu ý rằng không có mã thông báo nào biểu thị phần cuối 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 đó

Ghi chú. Trong tài liệu Python, một nhóm các câu lệnh được xác định bằng cách thụt đầu dòng thường được gọi là một bộ. Loạt bài hướng dẫn này sử dụng thuật ngữ khối và bộ thay thế cho nhau

Xem xét tệp kịch bản này

C:\Users\john\Documents>python blocks.py
Outer condition is true
Between inner conditions
Inner condition 2
End of outer condition
After outer condition
2

 1if 'foo' in ['bar', 'baz', 'qux']:
 2    print['Expression was true']
 3    print['Executing statement in suite']
 4    print['...']
 5    print['Done.']
 6print['After conditional']

Chạy

C:\Users\john\Documents>python blocks.py
Outer condition is true
Between inner conditions
Inner condition 2
End of outer condition
After outer condition
2 tạo ra kết quả này

C:\Users\john\Documents>python foo.py
After conditional

Bốn câu lệnh

C:\Users\john\Documents>python blocks.py
Outer condition is true
Between inner conditions
Inner condition 2
End of outer condition
After outer condition
4 trên các dòng từ 2 đến 5 được thụt vào cùng mức 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ó sai, vì vậy tất cả các câu lệnh trong khối đều bị bỏ qua. Sau khi kết thúc câu lệnh phức hợp
 1if 'foo' in ['bar', 'baz', 'qux']:
 2    print['Expression was true']
 3    print['Executing statement in suite']
 4    print['...']
 5    print['Done.']
 6print['After conditional']
5 [cho dù các câu lệnh trong khối từ dòng 2 đến dòng 5 có được thực thi hay không], quá trình thực thi sẽ tiếp tục với câu lệnh đầu tiên có mức thụt đầu dòng thấp hơn. câu lệnh
C:\Users\john\Documents>python blocks.py
Outer condition is true
Between inner conditions
Inner condition 2
End of outer condition
After outer condition
4 ở dòng 6

Các khối có thể được lồng vào nhau theo độ sâu tùy ý. Mỗi vết lõm xác định một khối mới và mỗi vết lõm 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

Đây là một tập lệnh phức tạp hơn có tên là

C:\Users\john\Documents>python blocks.py
Outer condition is true
Between inner conditions
Inner condition 2
End of outer condition
After outer condition
7

# Does line execute?                        Yes    No
#                                           ---    --
if 'foo' in ['foo', 'bar', 'baz']:        #  x
    print['Outer condition is true']      #  x

    if 10 > 20:                           #  x
        print['Inner condition 1']        #        x

    print['Between inner conditions']     #  x

    if 10 python blocks.py
Outer condition is true
Between inner conditions
Inner condition 2
End of outer condition
After outer condition

Ghi chú. Trong trường hợp bạn đang thắc mắc, quy tắc bên lề là lý do cần có thêm dòng mới khi nhập câu lệnh nhiều dòng trong phiên REPL. Mặt khác, trình thông dịch không có cách nào để biết rằng câu lệnh cuối cùng của khối đã được nhập

Loại bỏ các quảng cáo

Các ngôn ngữ khác làm gì?

Có lẽ bạn đang tò mò những lựa chọn thay thế là gì. Các khối được xác định như thế nào trong các ngôn ngữ không tuân thủ quy tắc bên ngoài?

Chiến thuật được hầu hết các ngôn ngữ lập trình sử dụng là chỉ định các mã thông báo đặc biệt đánh dấu điểm bắt đầu và kết thúc của một khối. Ví dụ, trong Perl, các khối được xác định bằng cặp dấu ngoặc nhọn [

C:\Users\john\Documents>python blocks.py
Outer condition is true
Between inner conditions
Inner condition 2
End of outer condition
After outer condition
8] như thế này

# [This is Perl, not Python]
if [] {
    ;
    ;
    ...
    ;
}
;

C/C++, Java và toàn bộ máy chủ sử dụng dấu ngoặc nhọn theo cách này

Kết hợp câu lệnh if trong C/C++, Perl và Java

Các ngôn ngữ khác, chẳng hạn như Algol và Pascal, sử dụng các từ khóa

C:\Users\john\Documents>python blocks.py
Outer condition is true
Between inner conditions
Inner condition 2
End of outer condition
After outer condition
9 và
# [This is Perl, not Python]
if [] {
    ;
    ;
    ...
    ;
}
;
0 để bao quanh các khối

Cái nào tốt hơn?

Tốt hơn là trong mắt của kẻ si tình. 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 việc. Tranh luận về giá trị của luật việt vị có thể diễn ra khá sôi nổi

Về mặt tích cực

  • Việc sử dụng thụt đầu dòng của Python sạch sẽ, ngắn gọn và nhất quán
  • Trong các ngôn ngữ lập trình không sử dụng quy tắc bên lề, việc thụt đầu dòng mã hoàn toàn độc lập với định nghĩa khối và chức năng mã. Có thể viết mã được thụt lề theo cách không thực sự khớp với cách mã thực thi, do đó tạo ra ấn tượng sai lầm khi một người chỉ nhìn lướt qua nó. Loại lỗi này hầu như không thể mắc phải trong Python
  • Việc sử dụng thụt đầu dòng để xác định các khối buộc bạn phải duy trì các tiêu chuẩn định dạng mã mà có lẽ bạn vẫn nên sử dụng

Về mặt tiêu cực

  • Nhiều lập trình viên không thích bị bắt buộc phải làm mọi thứ theo một cách nhất định. Họ có xu hướng có quan điểm mạnh mẽ về những gì có vẻ tốt và những gì không, và họ không muốn bị ép buộc vào một lựa chọn cụ thể.
  • Một số trình soạn thảo chèn hỗn hợp các ký tự dấu cách và tab vào bên trái của các dòng thụt lề, điều này khiến trình thông dịch Python khó xác định mức độ thụt lề. Mặt khác, thường có thể định cấu hình trình chỉnh sửa không làm điều này. Dù sao đi nữa, nó thường không được coi là mong muốn có sự kết hợp giữa các tab và khoảng trắng trong mã nguồn, bất kể ngôn ngữ là gì

Dù muốn hay không, nếu bạn đang lập trình bằng Python, bạn sẽ mắc kẹt với quy tắc bên lề. Tất cả các cấu trúc điều khiển trong Python đều sử dụng nó, như bạn sẽ thấy trong một số hướng dẫn sau này

Đối với giá trị của nó, nhiều lập trình viên đã quen với các ngôn ngữ với các phương tiện định nghĩa khối truyền thống hơn ban đầu đã quay trở lại với cách của Python nhưng đã cảm thấy thoải mái với nó và thậm chí đã trở nên thích nó hơn

Các mệnh đề
# [This is Perl, not Python]
if [] {
    ;
    ;
    ...
    ;
}
;
1 và
# [This is Perl, not Python]
if [] {
    ;
    ;
    ...
    ;
}
;
2

Bây giờ bạn đã biết cách sử dụng câu lệnh

 1if 'foo' in ['bar', 'baz', 'qux']:
 2    print['Expression was true']
 3    print['Executing statement in suite']
 4    print['...']
 5    print['Done.']
 6print['After conditional']
5 để thực thi có điều kiện một câu lệnh hoặc một khối nhiều câu lệnh. Đã đến lúc tìm hiểu xem bạn có thể làm gì khác

Đôi khi, bạn muốn đánh giá một điều kiện và chọn một đường dẫn nếu nó đúng nhưng chỉ định một đường dẫn thay thế nếu nó không đúng. Điều này được thực hiện với một mệnh đề

# [This is Perl, not Python]
if [] {
    ;
    ;
    ...
    ;
}
;
1

if :
    
else:
    

Nếu

C:\Users\john\Documents>python foo.py
After conditional
1 là đúng, bộ đầu tiên được thực thi và bộ thứ hai bị bỏ qua. Nếu
C:\Users\john\Documents>python foo.py
After conditional
1 là sai, bộ đầu tiên sẽ bị bỏ qua và bộ thứ hai được thực hiện. Dù bằng cách nào, quá trình thực thi sẽ tiếp tục sau bộ thứ hai. Cả hai bộ được xác định bằng thụt đầu dòng, như được mô tả ở trên

Trong ví dụ này,

# [This is Perl, not Python]
if [] {
    ;
    ;
    ...
    ;
}
;
7 nhỏ hơn
# [This is Perl, not Python]
if [] {
    ;
    ;
    ...
    ;
}
;
8, vì vậy bộ đầu tiên [dòng 4 đến dòng 5] được thực thi và bộ thứ hai [dòng 7 đến 8] được bỏ qua

>>>

 1>>> x = 20
 2
 3>>> if x >> 
>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
0

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, hãy sử dụng một hoặc nhiều mệnh đề

# [This is Perl, not Python]
if [] {
    ;
    ;
    ...
    ;
}
;
2 [viết tắt của other if]. Python lần lượt đánh giá từng
C:\Users\john\Documents>python foo.py
After conditional
1 và thực thi bộ phần mềm tương ứng với phần đầu tiên đúng. Nếu không có biểu thức nào là đúng và mệnh đề
# [This is Perl, not Python]
if [] {
    ;
    ;
    ...
    ;
}
;
1 được chỉ định, thì bộ của nó được thực thi

>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
1

Có thể chỉ định số lượng tùy ý các mệnh đề

# [This is Perl, not Python]
if [] {
    ;
    ;
    ...
    ;
}
;
2. Mệnh đề
# [This is Perl, not Python]
if [] {
    ;
    ;
    ...
    ;
}
;
1 là tùy chọn. Nếu nó hiện diện, thì chỉ có thể có một và nó phải được chỉ định cuối cùng

>>>

>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
2

Tối đa, một trong các khối mã được chỉ định sẽ được thực thi. Nếu không bao gồm mệnh đề

# [This is Perl, not Python]
if [] {
    ;
    ;
    ...
    ;
}
;
1 và tất cả các điều kiện đều sai, thì sẽ không có khối nào được thực thi

Ghi chú. Sử dụng một chuỗi dài dòng

 1if 'foo' in ['bar', 'baz', 'qux']:
 2    print['Expression was true']
 3    print['Executing statement in suite']
 4    print['...']
 5    print['Done.']
 6print['After conditional']
5/
# [This is Perl, not Python]
if [] {
    ;
    ;
    ...
    ;
}
;
2/
# [This is Perl, not Python]
if [] {
    ;
    ;
    ...
    ;
}
;
1 có thể hơi thiếu trang nhã, đặc biệt khi các hành động là những câu đơn giản như
C:\Users\john\Documents>python blocks.py
Outer condition is true
Between inner conditions
Inner condition 2
End of outer condition
After outer condition
4. Trong nhiều trường hợp, có thể có một cách Pythonic hơn để thực hiện điều tương tự

Đây là một giải pháp thay thế khả thi cho ví dụ trên bằng cách sử dụng phương pháp

 1>>> x = 20
 2
 3>>> if x >> 
>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
3

Nhớ lại từ hướng dẫn về từ điển Python rằng phương thức tìm kiếm từ điển cho khóa đã chỉ định và trả về giá trị được liên kết nếu tìm thấy hoặc giá trị mặc định đã cho nếu không tìm thấy

Một câu lệnh

 1if 'foo' in ['bar', 'baz', 'qux']:
 2    print['Expression was true']
 3    print['Executing statement in suite']
 4    print['...']
 5    print['Done.']
 6print['After conditional']
5 với các mệnh đề
# [This is Perl, not Python]
if [] {
    ;
    ;
    ...
    ;
}
;
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ử
 1>>> x = 20
 2
 3>>> if x >> x = 20
 2
 3>>> if x >> 
>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
4

Biểu thức thứ hai chứa một phép chia cho 0 và biểu thức thứ ba tham chiếu đến một biến không xác định

 1>>> x = 20
 2
 3>>> if x >> x = 20
 2
 3>>> if x python foo.py
After conditional
2 thụt vào dòng tiếp theo như thế này

if :
    

Nhưng được phép viết toàn bộ câu lệnh

 1if 'foo' in ['bar', 'baz', 'qux']:
 2    print['Expression was true']
 3    print['Executing statement in suite']
 4    print['...']
 5    print['Done.']
 6print['After conditional']
5 trên một dòng. Sau đây là chức năng tương đương với ví dụ trên

>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
6

Thậm chí có thể có nhiều hơn một

C:\Users\john\Documents>python foo.py
After conditional
2 trên cùng một dòng, được phân tách bằng dấu chấm phẩy

>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
7

Nhưng nó có nghĩa gì?

  1. Nếu

    C:\Users\john\Documents>python foo.py
    After conditional
    
    1 là đúng, thực hiện
    >>> x = 0
    >>> y = 5
    
    >>> if x >> if y >> if x:                                # Falsy
    ..     print['yes']
    ...
    >>> if y:                                # Truthy
    ..     print['yes']
    ...
    yes
    
    >>> if x or y:                           # Truthy
    ..     print['yes']
    ...
    yes
    >>> if x and y:                          # Falsy
    ..     print['yes']
    ...
    
    >>> if 'aul' in 'grault':                # Truthy
    ..     print['yes']
    ...
    yes
    >>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
    ..     print['yes']
    ...
    
    04

    Sau đó, thực hiện

    >>> x = 0
    >>> y = 5
    
    >>> if x >> if y >> if x:                                # Falsy
    ..     print['yes']
    ...
    >>> if y:                                # Truthy
    ..     print['yes']
    ...
    yes
    
    >>> if x or y:                           # Truthy
    ..     print['yes']
    ...
    yes
    >>> if x and y:                          # Falsy
    ..     print['yes']
    ...
    
    >>> if 'aul' in 'grault':                # Truthy
    ..     print['yes']
    ...
    yes
    >>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
    ..     print['yes']
    ...
    
    05 vô điều kiện, bất kể
    C:\Users\john\Documents>python foo.py
    After conditional
    
    1 có đúng hay không

  2. Nếu

    C:\Users\john\Documents>python foo.py
    After conditional
    
    1 là đúng, hãy thực hiện tất cả
    >>> x = 0
    >>> y = 5
    
    >>> if x >> if y >> if x:                                # Falsy
    ..     print['yes']
    ...
    >>> if y:                                # Truthy
    ..     print['yes']
    ...
    yes
    
    >>> if x or y:                           # Truthy
    ..     print['yes']
    ...
    yes
    >>> if x and y:                          # Falsy
    ..     print['yes']
    ...
    
    >>> if 'aul' in 'grault':                # Truthy
    ..     print['yes']
    ...
    yes
    >>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
    ..     print['yes']
    ...
    
    08. Mặt khác, không thực hiện bất kỳ trong số họ

Python có cách giải thích sau. Dấu chấm phẩy ngăn cách

>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
09 có mức độ ưu tiên cao hơn so với dấu hai chấm theo sau
C:\Users\john\Documents>python foo.py
After conditional
1—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 dấu hai chấm. Do đó,
>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
09 được coi là một bộ và tất cả chúng đều được thực thi hoặc không có cái nào được thực thi.

>>>

>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
8

Nhiều câu lệnh cũng có thể được chỉ định trên cùng một dòng với mệnh đề

# [This is Perl, not Python]
if [] {
    ;
    ;
    ...
    ;
}
;
2 hoặc
# [This is Perl, not Python]
if [] {
    ;
    ;
    ...
    ;
}
;
1

>>>

>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
9

Mặc dù tất cả những cách này đều hiệu quả và trình thông dịch cho phép nhưng nhìn chung không khuyến khích với lý do là nó dẫn đến khả năng đọc kém, đặc biệt đối với các câu lệnh

 1if 'foo' in ['bar', 'baz', 'qux']:
 2    print['Expression was true']
 3    print['Executing statement in suite']
 4    print['...']
 5    print['Done.']
 6print['After conditional']
5 phức tạp. đặc biệt khuyến nghị chống lại nó

Như thường lệ, đó là một vấn đề của hương vị. Hầu hết mọi người sẽ 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

>>>

 1if :
 2    
 3    
 4    ...
 5    
 6
0

Tuy nhiên, nếu một câu lệnh

 1if 'foo' in ['bar', 'baz', 'qux']:
 2    print['Expression was true']
 3    print['Executing statement in suite']
 4    print['...']
 5    print['Done.']
 6print['After conditional']
5 đủ đơn giản, thì việc đặt tất cả vào một dòng có thể hợp lý. Một cái gì đó như thế này có lẽ sẽ không nâng cao quá nhiều cho bất cứ ai

 1if :
 2    
 3    
 4    ...
 5    
 6
1

Biểu thức điều kiện [Toán tử ternary của Python]

Python hỗ trợ một thực thể ra quyết định bổ sung được gọi là biểu thức điều kiện. [Nó còn được gọi là toán tử có điều kiện hoặc toán tử bậc ba ở nhiều nơi trong tài liệu Python. ] Biểu thức điều kiện đã được đề xuất bổ sung cho ngôn ngữ trong PEP 308 và được Guido bật đèn xanh vào năm 2005

Ở dạng đơn giản nhất, cú pháp của biểu thức điều kiện như sau

 1if :
 2    
 3    
 4    ...
 5    
 6
2

Điều này khác với các dạng câu lệnh

 1if 'foo' in ['bar', 'baz', 'qux']:
 2    print['Expression was true']
 3    print['Executing statement in suite']
 4    print['...']
 5    print['Done.']
 6print['After conditional']
5 được liệt kê ở trên vì nó không phải là cấu trúc điều khiển điều khiển luồng thực thi 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,
>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
17 được đánh giá trước. Nếu nó đúng, biểu thức ước tính là
>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
18. Nếu nó là sai, biểu thức ước tính là
>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
19

Lưu ý thứ tự không rõ ràng. biểu thức ở giữa được ước tính trước và dựa trên kết quả đó, một trong các biểu thức ở cuối được trả về. Dưới đây là một số ví dụ hy vọng sẽ giúp làm rõ

>>>

 1if :
 2    
 3    
 4    ...
 5    
 6
3

Ghi chú. Biểu thức điều kiện của Python tương tự như cú pháp

>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
20 được sử dụng bởi nhiều ngôn ngữ khác—C, Perl và Java để kể tên một số. Trên thực tế, toán tử
>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
21 thường được gọi là toán tử bậc ba trong các ngôn ngữ đó, đây có lẽ là lý do biểu thức điều kiện của Python đôi khi được gọi là toán tử bậc ba Python

Bạn có thể thấy trong PEP 308 rằng cú pháp

>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
20 đã được xem xét cho Python nhưng cuối cùng bị từ chối để ủng hộ cú pháp được hiển thị ở trên

Một cách sử dụng phổ biến của biểu thức điều kiện là chọn phép gán biến. Ví dụ: giả sử bạn muốn tìm số lớn hơn trong hai số. Tất nhiên, có một chức năng tích hợp sẵn,

>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
23, chỉ thực hiện đ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 mình từ đầu

Bạn có thể sử dụng câu lệnh

 1if 'foo' in ['bar', 'baz', 'qux']:
 2    print['Expression was true']
 3    print['Executing statement in suite']
 4    print['...']
 5    print['Done.']
 6print['After conditional']
5 tiêu chuẩn với mệnh đề
# [This is Perl, not Python]
if [] {
    ;
    ;
    ...
    ;
}
;
1

>>>

 1if :
 2    
 3    
 4    ...
 5    
 6
4

Nhưng một biểu thức điều kiện ngắn hơn và cũng dễ đọc hơn

>>>

 1if :
 2    
 3    
 4    ...
 5    
 6
5

Hãy nhớ rằng biểu thức điều kiện hoạt động giống như một biểu thức về mặt cú pháp. Nó có thể được sử dụng như một phần của biểu thức dài hơn. Biểu thức điều kiện có mức độ ưu tiên thấp hơn so với hầu như tất cả các toán tử khác, vì vậy cần có dấu ngoặc đơn để nhóm nó lại với nhau

Trong ví dụ sau, toán tử

>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
26 liên kết chặt chẽ hơn biểu thức điều kiện, do đó,
>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
27 và
>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
28 được đánh giá trước, tiếp theo là biểu thức điều kiện. 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ả

>>>

 1if :
 2    
 3    
 4    ...
 5    
 6
6

Nếu bạn muốn đánh giá biểu thức điều kiện trước, bạn cần bao quanh nó bằng các dấu ngoặc đơn nhóm. Trong ví dụ tiếp theo,

>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
29 được đánh giá trước. Kết quả là
>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
30, tức là
>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
31, vì vậy _____17_______32 được gán ___17_______33 = ____17_______34

>>>

 1if :
 2    
 3    
 4    ...
 5    
 6
7

Nếu bạn đang sử dụng biểu thức điều kiện như một phần của biểu thức lớn hơn, có lẽ nên sử dụng dấu ngoặc đơn nhóm để làm rõ ngay cả khi chúng không cần thiết

Biểu thức điều kiện cũng sử dụng như biểu thức logic phức hợp. Các phần của biểu thức điều kiện không được đánh giá nếu chúng không cần thiết

Trong biểu thức

>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
35

  • Nếu
    >>> x = 0
    >>> y = 5
    
    >>> if x >> if y >> if x:                                # Falsy
    ..     print['yes']
    ...
    >>> if y:                                # Truthy
    ..     print['yes']
    ...
    yes
    
    >>> if x or y:                           # Truthy
    ..     print['yes']
    ...
    yes
    >>> if x and y:                          # Falsy
    ..     print['yes']
    ...
    
    >>> if 'aul' in 'grault':                # Truthy
    ..     print['yes']
    ...
    yes
    >>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
    ..     print['yes']
    ...
    
    17 là true, thì trả về ___17_______18 và _____17_______19 không được đánh giá
  • Nếu
    >>> x = 0
    >>> y = 5
    
    >>> if x >> if y >> if x:                                # Falsy
    ..     print['yes']
    ...
    >>> if y:                                # Truthy
    ..     print['yes']
    ...
    yes
    
    >>> if x or y:                           # Truthy
    ..     print['yes']
    ...
    yes
    >>> if x and y:                          # Falsy
    ..     print['yes']
    ...
    
    >>> if 'aul' in 'grault':                # Truthy
    ..     print['yes']
    ...
    yes
    >>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
    ..     print['yes']
    ...
    
    17 là sai, thì trả về ___17_______19 và _____17_______18 không được đánh giá

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

>>>

 1if :
 2    
 3    
 4    ...
 5    
 6
8

Trong cả hai trường hợp, các điều khoản

>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
42 không được đánh giá, vì vậy không có ngoại lệ nào được đưa ra

Các biểu thức điều kiện cũng có thể được xâu chuỗi lại với nhau, như một loại cấu trúc thay thế

 1if 'foo' in ['bar', 'baz', 'qux']:
 2    print['Expression was true']
 3    print['Executing statement in suite']
 4    print['...']
 5    print['Done.']
 6print['After conditional']
5/
# [This is Perl, not Python]
if [] {
    ;
    ;
    ...
    ;
}
;
2/
# [This is Perl, not Python]
if [] {
    ;
    ;
    ...
    ;
}
;
1, như minh họa ở đây

>>>

 1if :
 2    
 3    
 4    ...
 5    
 6
9

Không rõ là đ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

 1if 'foo' in ['bar', 'baz', 'qux']:
 2    print['Expression was true']
 3    print['Executing statement in suite']
 4    print['...']
 5    print['Done.']
 6print['After conditional']
5/
# [This is Perl, not Python]
if [] {
    ;
    ;
    ...
    ;
}
;
2/
# [This is Perl, not Python]
if [] {
    ;
    ;
    ...
    ;
}
;
1 hay không, nhưng nó đúng cú pháp Python

Loại bỏ các quảng cáo

Câu lệnh
>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
49 của Python

Đôi khi, bạn có thể thấy rằng bạn muốn viết cái được gọi là sơ khai mã. trình giữ chỗ cho nơi cuối cùng bạn sẽ đặt một khối mã mà bạn chưa triển khai

Trong các ngôn ngữ mà 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ư dấu ngoặc nhọn trong Perl và C, các dấu phân cách trống có thể được sử dụng để xác định sơ khai mã. Ví dụ: sau đây là mã Perl hoặc C hợp pháp

 1if 'foo' in ['bar', 'baz', 'qux']:
 2    print['Expression was true']
 3    print['Executing statement in suite']
 4    print['...']
 5    print['Done.']
 6print['After conditional']
0

Ở đây, các dấu ngoặc nhọn trống xác định một khối trống. Perl hoặc C sẽ đánh giá biểu thức

# [This is Perl, not Python]
if [] {
    ;
    ;
    ...
    ;
}
;
7, và sau đó ngay cả khi nó đúng, lặng lẽ không làm gì cả

Bởi vì Python sử dụng thụt đầu dòng thay vì 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

 1if 'foo' in ['bar', 'baz', 'qux']:
 2    print['Expression was true']
 3    print['Executing statement in suite']
 4    print['...']
 5    print['Done.']
 6print['After conditional']
5 với
# Does line execute?                        Yes    No
#                                           ---    --
if 'foo' in ['foo', 'bar', 'baz']:        #  x
    print['Outer condition is true']      #  x

    if 10 > 20:                           #  x
        print['Inner condition 1']        #        x

    print['Between inner conditions']     #  x

    if 10 python blocks.py
Outer condition is true
Between inner conditions
Inner condition 2
End of outer condition
After outer condition
2

 1if 'foo' in ['bar', 'baz', 'qux']:
 2    print['Expression was true']
 3    print['Executing statement in suite']
 4    print['...']
 5    print['Done.']
 6print['After conditional']
1

Nếu bạn cố chạy

C:\Users\john\Documents>python blocks.py
Outer condition is true
Between inner conditions
Inner condition 2
End of outer condition
After outer condition
2, bạn sẽ nhận được điều này

 1if 'foo' in ['bar', 'baz', 'qux']:
 2    print['Expression was true']
 3    print['Executing statement in suite']
 4    print['...']
 5    print['Done.']
 6print['After conditional']
2

Câu lệnh Python

>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
49 giải quyết vấn đề này. Nó hoàn toàn không thay đổi hành vi của chương trình. Nó được sử dụng như một trình giữ chỗ để giữ cho trình thông dịch hài lòng trong bất kỳ tình huống nào mà một câu lệnh đượ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ì

 1if 'foo' in ['bar', 'baz', 'qux']:
 2    print['Expression was true']
 3    print['Executing statement in suite']
 4    print['...']
 5    print['Done.']
 6print['After conditional']
3

Bây giờ

C:\Users\john\Documents>python blocks.py
Outer condition is true
Between inner conditions
Inner condition 2
End of outer condition
After outer condition
2 chạy không có lỗi

 1if 'foo' in ['bar', 'baz', 'qux']:
 2    print['Expression was true']
 3    print['Executing statement in suite']
 4    print['...']
 5    print['Done.']
 6print['After conditional']
4

Phần kết luận

Với việc hoàn thành hướng dẫn này, bạn đang bắt đầu viết mã Python vượt xa việc thực thi tuần tự đơn giản

  • Bạn đã được giới thiệu về khái niệm cấu trúc điều khiển. Đây là những câu lệnh phức hợp làm thay đổi luồng điều khiển chương trình—thứ tự thực hiện các câu lệnh chương trình
  • Bạn đã học cách nhóm các câu lệnh riêng lẻ lại với nhau thành một khối hoặc bộ
  • Bạn đã gặp cấu trúc điều khiển đầu tiên của mình, câu lệnh
     1if 'foo' in ['bar', 'baz', 'qux']:
     2    print['Expression was true']
     3    print['Executing statement in suite']
     4    print['...']
     5    print['Done.']
     6print['After conditional']
    
    5, cho phép thực thi có điều kiện một câu lệnh hoặc khối dựa trên đánh giá dữ liệu chương trình

Tất cả những khái niệm này đều 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. câu lệnh

>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
58 và câu lệnh
>>> x = 0
>>> y = 5

>>> if x >> if y >> if x:                                # Falsy
..     print['yes']
...
>>> if y:                                # Truthy
..     print['yes']
...
yes

>>> if x or y:                           # Truthy
..     print['yes']
...
yes
>>> if x and y:                          # Falsy
..     print['yes']
...

>>> if 'aul' in 'grault':                # Truthy
..     print['yes']
...
yes
>>> if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
..     print['yes']
...
59. Các cấu trúc này tạo điều kiện thuận lợi cho việc lặp đi lặp lại, thực hiện một câu lệnh hoặc khối câu lệnh nhiều lần

Lấy bài kiểm tra. Kiểm tra kiến ​​thức của bạn với bài kiểm tra tương tác “Câu lệnh có điều kiện Python” của chúng tôi. Sau khi hoàn thành, bạn sẽ nhận được điểm số để có thể theo dõi quá trình học tập của mình theo thời gian

Lấy bài kiểm tra "

« Cấu trúc chương trình Python

Vòng lặp "trong khi" của Python »

Đánh dấu là đã hoàn thành

Xem ngay Hướng dẫn này có một khóa học video liên quan do nhóm Real Python tạo. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn. Câu lệnh có điều kiện trong Python [if/elif/else]

🐍 Thủ thuật Python 💌

Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python

Gửi cho tôi thủ thuật Python »

Giới thiệu về John Sturtz

John là một Pythonista cuồng nhiệt và là thành viên của nhóm hướng dẫn Real Python

» Thông tin thêm về John

Mỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là

Brad

Joanna

Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Chuyên gia Kỹ năng Python trong thế giới thực
Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bạn nghĩ sao?

Đánh giá bài viết này

Tweet Chia sẻ Chia sẻ Email

Bài học số 1 hoặc điều yêu thích mà bạn đã học được là gì?

Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi

Một câu lệnh trong ví dụ Python là gì?

Vì vậy, nói một cách đơn giản, chúng ta có thể nói mọi thứ được viết bằng Python là một câu lệnh. Câu lệnh Python kết thúc bằng ký tự mã thông báo NEWLINE. Nó có nghĩa là mỗi dòng trong tập lệnh Python là một câu lệnh. Ví dụ a = 10 là câu lệnh gán.

Câu lệnh và chức năng trong Python là gì?

Một câu lệnh là một cấu trúc cú pháp. Hàm là một đối tượng . Có các câu lệnh để tạo hàm, như def. def Spam[]. đi qua. Vì vậy, các câu lệnh là một trong những cách để chỉ cho Python biết rằng bạn muốn nó tạo một hàm.

một biểu thức và một tuyên bố là gì?

Các biểu thức có ý nghĩa duy nhất, trong khi các câu lệnh có hai mặt khi thực thi . Ví dụ: 1 có giá trị nhất định trong khi go[] có thể được thực thi hoặc không. Các câu lệnh là toàn bộ cấu trúc, trong khi các biểu thức là các khối xây dựng. Ví dụ, một dòng hoặc một khối mã là một câu lệnh.

Tuyên bố trong mã hóa là gì?

Trong ngôn ngữ lập trình máy tính, câu lệnh là dòng mã chỉ huy một tác vụ . Mỗi chương trình bao gồm một chuỗi các câu lệnh.

Chủ Đề