Tính logic và khả năng kiểm soát quá trình thực thi là yếu tố then chốt để xây dựng phần mềm hiệu quả. Trong Python, điều này được thực hiện thông qua cơ chế điều khiển luồng. Bài viết này Vietnix sẽ cung cấp một cái nhìn tổng quan về các cấu trúc điều khiển luồng trong Python, đặc biệt tập trung vào các câu lệnh rẽ nhánh và vòng lặp, nền tảng cho mọi chương trình phức tạp.
Điều khiển luồng (Control Flow) là gì?
Khi bạn viết một chương trình Python, các dòng code thường được thực hiện tuần tự từ trên xuống dưới. Tuy nhiên, điều này chỉ phù hợp với các tác vụ đơn giản. Nếu muốn chương trình của mình trở nên linh hoạt hơn, có khả năng đưa ra các quyết định và thực hiện các công việc khác nhau tùy thuộc vào từng điều kiện, bạn cần đến điều khiển luồng (control flow).
Hiểu một cách đơn giản, điều khiển luồng là cách bạn “chỉ đạo” chương trình của mình:
- Rẽ nhánh: Thực hiện một khối lệnh này hay một khối lệnh khác tùy thuộc vào một điều kiện nào đó.
- Lặp lại: Thực hiện một khối lệnh nhiều lần.
- Nhảy: Gọi một hàm để thực hiện một tác vụ cụ thể rồi quay lại nơi gọi hàm.
Python cũng giống như hầu hết các ngôn ngữ lập trình khác, cung cấp cho chúng ta các công cụ để kiểm soát luồng thực thi, giúp chúng ta viết ra các chương trình phức tạp và thông minh hơn. Nhìn chung, có hai loại câu lệnh chính giúp chúng ta điều khiển luồng: câu lệnh rẽ nhánh (decision making statements) và vòng lặp (loop statements). Chúng ta sẽ cùng nhau khám phá ở ngay phần tiếp theo đây.
Câu lệnh rẽ nhánh (Decision Making Statements)
Các câu lệnh rẽ nhánh được sử dụng trong chương trình Python để giúp chương trình quyết định nhóm chỉ thị nào trong các nhóm chỉ thị khác nhau sẽ được thực thi, dựa trên giá trị của một biểu thức Boolean nhất định.
Sơ đồ sau đây minh họa cách các câu lệnh rẽ nhánh hoạt động:
Câu lệnh if trong Python
Python cung cấp các câu lệnh if..elif..else như một phần của việc ra quyết định. Nó bao gồm ba khối khác nhau, đó là khối if, khối elif (viết tắt của else if) và khối else.
Đây là một ví dụ đơn giản sử dụng if..elif..else.
Bạn có thể thử chạy đoạn code này với các giá trị marks khác nhau để kiểm tra kết quả.
marks = 80
result = ""
if marks < 30:
result = "Failed"
elif marks > 75:
result = "Passed with distinction"
else:
result = "Passed"
print(result)
Điều này sẽ tạo ra kết quả sau:
Passed with distinction
Câu lệnh match trong Python
Python hỗ trợ câu lệnh match-case, cũng được sử dụng để đưa ra quyết định. Nếu một mẫu (pattern) khớp với biểu thức, code trong khối case tương ứng sẽ được thực thi.
Đây là một ví dụ đơn giản sử dụng câu lệnh match:
def checkVowel(n):
match n:
case 'a': return "Vowel alphabet"
case 'e': return "Vowel alphabet"
case 'i': return "Vowel alphabet"
case 'o': return "Vowel alphabet"
case 'u': return "Vowel alphabet"
case _: return "Simple alphabet"
print (checkVowel('a'))
print (checkVowel('m'))
print (checkVowel('o'))
CHương trình trên sẽ in ra kết quả:
Vowel alphabet
Simple alphabet
Vowel alphabet
Vòng lặp hoặc câu lệnh lặp
Phần lớn các quy trình đều yêu cầu một nhóm các lệnh được thực thi lặp đi lặp lại. Trong thuật ngữ lập trình, đây được gọi là một vòng lặp. Thay vì tiếp tục bước tiếp theo, nếu luồng điều khiển được chuyển hướng về một bước trước đó, thì đó tạo thành một vòng lặp.
Sơ đồ sau đây minh họa cách hoạt động của vòng lặp:
Nếu luồng điều khiển quay lại vô điều kiện, điều này tạo thành một vòng lặp vô hạn, một điều không mong muốn vì phần code còn lại sẽ không bao giờ được thực thi.
Trong một vòng lặp có điều kiện, việc lặp đi lặp lại một khối lệnh sẽ tiếp diễn cho đến khi một điều kiện cụ thể được đáp ứng. Python hỗ trợ nhiều loại vòng lặp như vòng lặp for
, vòng lặp while
, mà mình sẽ tìm hiểu ở các chương tiếp theo trong series học lập trình Python này.
Vòng lặp for
Vòng lặp for
sẽ duyệt qua từng phần tử của một chuỗi, chẳng hạn như một danh sách (list), bộ (tuple) hoặc chuỗi (string).
Dưới đây là một ví dụ sử dụng vòng lặp for để duyệt qua một mảng trong Python:
words = ["one", "two", "three"]
for x in words:
print(x)
Chương trình trên sẽ in ra kết quả:
one
two
three
Vòng lặp while
Vòng lặp while sẽ thực thi lặp đi lặp lại một khối lệnh chừng nào biểu thức điều kiện boolean vẫn còn đúng.
Dưới đây là ví dụ sử dụng vòng lặp while để in ra 5 số đầu tiên trong Python:
i = 1
while i < 6:
print(i)
i += 1
Chương trình trên sẽ in ra kết quả:
1
2
3
4
5
Các lệnh nhảy (jump) trong Python
Các lệnh nhảy được sử dụng để chuyển đến một vị trí cụ thể trong chương trình, ngắt luồng thực thi hiện tại. Trong Python, có hai lệnh nhảy chính là break
và continue
.
Lệnh break
Lệnh break
sẽ kết thúc vòng lặp hiện tại và chương trình tiếp tục thực thi ở câu lệnh kế tiếp sau vòng lặp đó.
Đoạn code sau đây minh họa cách sử dụng lệnh break:
x = 0
while x < 10:
print("x:", x)
if x == 5:
print("Breaking...")
break
x += 1
print("End")
Kết quả đầu ra sẽ như sau:
x: 0
x: 1
x: 2
x: 3
x: 4
x: 5
Breaking…
End
Bạn có thể thấy rằng khi x bằng 5, lệnh break được thực thi, vòng lặp while dừng lại và chương trình tiếp tục với câu lệnh print(“End”).
Lệnh continue
Lệnh continue
sẽ bỏ qua phần còn lại của khối lệnh bên trong vòng lặp và chuyển quyền điều khiển trở lại đầu vòng lặp hiện tại để bắt đầu lần lặp tiếp theo.
Ví dụ sau đây minh họa việc sử dụng lệnh continue
:
for letter in "Python":
# continue when letter is 'h'
if letter == "h":
continue
print("Current Letter :", letter)
Kết quả đầu ra sẽ là:
Current Letter : P
Current Letter : y
Current Letter : t
Current Letter : o
Current Letter : n
Lời kết
Qua bài viết, bạn đã nắm bắt được các câu lệnh điều khiển luồng thiết yếu của Python. Hy vọng kiến thức này sẽ hỗ trợ bạn trong việc xây dựng và kiểm soát logic của chương trình một cách tốt nhất, giúp code trở nên mạch lạc và dễ bảo trì hơn.