Th4 122020
 

Các thành phần cơ bản của luồng điều khiển
Các câu lệnh điều khiển luồng thường bắt đầu bằng một phần gọi là điều kiện và luôn được theo sau bởi một khối mã được gọi là mệnh đề. Trước khi bạn tìm hiểu về các câu lệnh điều khiển luồng cụ thể của Python, tôi sẽ trình bày về điều kiện và khối là gì.
Điều kiện
Các biểu thức Boolean mà bạn đã thấy cho đến nay đều có thể được coi là điều kiện, giống như các biểu thức; điều kiện chỉ là một tên cụ thể hơn trong bối cảnh của các câu lệnh kiểm soát luồng. Các điều kiện luôn đánh giá xuống giá trị Boolean, True hoặc False. Một câu lệnh điều khiển luồng quyết định những việc cần làm dựa trên việc điều kiện của nó là True hay False và hầu như mọi câu lệnh điều khiển luồng đều sử dụng một điều kiện.
Khối mã lệnh
Các dòng mã Python có thể được nhóm lại với nhau theo khối. Bạn có thể biết khi nào một khối bắt đầu và kết thúc từ sự thụt dòng của các dòng mã. Có ba quy tắc cho các khối.

  • Khối bắt đầu khi thụt đầu dòng tăng.
  • Khối có thể chứa các khối khác.
  • Khối kết thúc khi thụt đầu dòng giảm xuống 0 hoặc đến thụt đầu dòng khối chứa.
    Các khối dễ hiểu hơn bằng cách xem một số mã thụt lề, vì vậy hãy tìm các khối trong một phần của chương trình trò chơi nhỏ, được hiển thị ở đây:
name = 'Mary'
password = 'swordfish'
if name == 'Mary':
    print('Hello, Mary')
if password == 'swordfish':
    print('Access granted.')
else:
    print('Wrong password.')

Chương trình thực thi
Trong chương trước, chương trình hello.py, Python bắt đầu thực hiện các hướng dẫn ở đầu chương trình đi xuống, từng cái một. Việc thực hiện chương trình (hoặc đơn giản là thực thi) là một thuật ngữ cho lệnh hiện tại đang được thực thi.
Nếu bạn in mã nguồn trên giấy và đặt ngón tay lên từng dòng khi nó được thực thi, bạn có thể nghĩ ngón tay của mình là chương trình thực thi.
Tuy nhiên, không phải tất cả các chương trình thực hiện bằng cách đi thẳng xuống. Nếu bạn sử dụng ngón tay của mình để theo dõi một chương trình với các câu lệnh kiểm soát luồng, bạn có thể thấy mình nhảy xung quanh mã nguồn dựa trên các điều kiện và bạn có thể bỏ qua toàn bộ mệnh đề.
Các câu lệnh điều khiển luồng
Bây giờ, hãy cùng khám phá phần điều khiển luồng quan trọng nhất: chính là các câu lệnh. Các báo cáo đại diện cho những viên kim cương bạn đã thấy trong sơ đồ trong phần trước và chúng là những quyết định thực tế mà các chương trình của bạn sẽ đưa ra.
Lệnh if
Loại phổ biến nhất của câu lệnh điều khiển luồng là câu lệnh if. Mệnh đề if (nghĩa là khối theo sau câu lệnh if) sẽ thực thi nếu điều kiện câu lệnh là True. Mệnh đề được bỏ qua nếu điều kiện là False.
Nói một cách dễ hiểu, một câu lệnh if có thể được đọc là, nếu Nếu điều kiện này là đúng, hãy thực thi mã trong mệnh đề. Trong Python, một câu lệnh if bao gồm:

  • Từ khóa if
  • Một điều kiện (Đây là biểu thức để tính toán True hay False).
  • Một dấu hai chấm :
  • Dòng tiếp theo sẽ thụt vào 4 dòng(được gọi là mệnh đề điều kiện của lệnh if).

Đoạn code dưới đây sẽ kiểm tra nếu tên ai là Alice, biến name được gán giá trị nào trước đó.

if name == 'Alice':
    print('Hi, Alice.')

Tất cả luồng điều khiển điều kiện sẽ được kết thúc và theo sau là khối mã lệnh. Chúng ta sẽ mô tả khối lệnh trên bằng biểu đồ hình dưới.

Lệnh else
Một mệnh đề if có thể tùy ý được theo sau bởi một câu lệnh khác. Mệnh đề else chỉ được thực thi khi điều kiện if câu lệnh if là False. Nói một cách dễ hiểu, một câu lệnh else có thể được đọc là, nếu điều kiện này là đúng, hãy thực thi mã này. Hoặc nếu không, thực thi mã kia. Một câu lệnh else không có điều kiện và trong mã, một câu lệnh else luôn bao gồm các điều sau đây:

  • Câu lệnh else.
  • Một dấu hai chấm :
  • Khối lệnh sau thụt và bốn khoảng trống được gọi là biểu thức của mệnh đề else.
    Quay trở lại với ví dụ Alice ở trên chúng ta sẽ thêm câu lệnh else nếu người nào đấy không phải tên là Alice.
if name == 'Alice':
    print('Hi, Alice.')
else:
    print('Hello, stranger.')

Hình dưới đây sẽ mô tả biểu đồ khối lệnh trên được thực hiện.

Mặc dù chỉ có một trong các mệnh đề if hoặc else sẽ thực thi, bạn có thể gặp trường hợp bạn muốn một trong nhiều mệnh đề có thể thực thi. Câu lệnh elif là một câu lệnh khác nếu một câu lệnh elif luôn tuân theo câu lệnh if hoặc câu lệnh elif khác. Nó cung cấp một điều kiện khác chỉ được kiểm tra nếu tất cả các điều kiện trước đó là Sai. Trong mã, một câu lệnh elif luôn bao gồm:

  • Từ khóa elif.
  • Một điều kiện là biểu thức có thể tính toán là True hay False.
  • Một dấu hai chấm :
  • Dòng tiếp theo sẽ được lùi vào 4 khoảng trống gọi là mệnh đề elif.
    Để thêm câu lệnh elif vào phần kiểm tra tên Alice ở trên ta làm như sau.
if name == 'Alice':
    print('Hi, Alice.')
elif age < 12:
    print('You are not Alice, kiddo.')

Lần này bạn có thể kiểm tra thêm tuổi, bạn có thể nhìn thấy biểu đồ mô tả ở phía dưới.


Mệnh đề elif thực thi nếu age <12 là True và name == ‘Alice’ là False. Tuy nhiên, nếu cả hai điều kiện đều False, thì cả hai mệnh đề đều bị bỏ qua. Không đảm bảo rằng ít nhất một trong các mệnh đề sẽ được thực thi.
Khi có một chuỗi các câu lệnh elif, chỉ một hoặc không một trong các mệnh đề sẽ được thực thi. Khi một trong các câu điều kiện được tìm thấy là True, phần còn lại của các mệnh đề elif sẽ tự động bị bỏ qua. Ví dụ: mở một cửa sổ soạn thảo tệp mới và nhập mã sau đây, lưu nó dưới dạng vampire.py:

name = 'Carol'
age = 3000
if name == 'Alice':
    print('Hi, Alice.')
elif age < 12:
    print('You are not Alice, kiddo.')
elif age > 2000:
    print('Unlike you, Alice is not an undead, immortal vampire.')
elif age > 100:
    print('You are not Alice, grannie.')

Ở đây chương trình đã được thêm nhiều điều kiện elif, chúng ta sẽ tìm hiểu kĩ hơn ở biểu đồ dưới đây.

Tùy chọn, bạn có thể có một câu lệnh else sau câu lệnh elif cuối cùng.
Trong trường hợp đó, đảm bảo rằng ít nhất một (và chỉ một) mệnh đề sẽ được thực thi. Nếu các điều kiện trong mọi câu lệnh if và elif là False, thì mệnh đề else được thực thi. Ví dụ: hãy để lại chương trình Alice để sử dụng các mệnh đề if, elif và mệnh đề else.

name = 'Carol'
age = 3000
if name == 'Alice':
    print('Hi, Alice.')
elif age < 12:
    print('You are not Alice, kiddo.')
else:
    print('You are neither Alice nor a little kid.')

Biểu đồ phía dưới sẽ mô tả cách thực hiện của đoạn mã trên.

Chúc các bạn thành công!