Trong python cú pháp cấu trúc rẽ nhánh dạng thiệu là

Cấu trúc rẽ nhánh là một phần không thể thiếu được trong các ngôn ngữ lập trình, và đương nhiên là với Python cũng không ngoại lệ, bài này chúng ta hay cũng nhau tìm hiểu về cấu trúc rẽ nhánh trong Python nhé!

1, Luồng xử lý.

Nếu như trong thực tế, chúng ta thường có các trường hợp để xử lý vấn đề thì trong ngôn ngữ lập trình nó cũng như thế khái niệm này trong lập trình gọi là rẽ nhánh.

Nói một cách dễ hiểu hơn thì "nếu điều kiện này đúng thì thực hiện khối lệnh A, nếu sai thì thực hiện khối lệnh B". Ở đây các điều kiện trả về giá trị khác 0 hoặc bằng True thì coi là đúng và trả về 0, None hoặc False thì coi là sai.

Câu lệnh rẽ nhánh trong Python được thể hiện qua cậu lệnh if-else với các dạng sau:

Câu lệnh if-else

If-else dịch ra tiếng Việt có nghĩa là nếu thì và nó ở trong lập trình cũng thế. Các điều kiện mà mệnh đề if đưa ra trả về là đúng [True] thì nó sẽ thực thi code bên trong mệnh đề if và ngược lại nếu điều kiện đó sai thì nó sẽ thực hiện code trong mệnh đề else.

Cú pháp của câu lệnh if-else:

if condition: 
    #code
else:
    #code

Trong đó, condition là điều kiện của mệnh đề if.

VD: Mình sẽ viết 1 chương trình kiểm tra xem giá trị của biến a bằng 100 thì in ra là đúng và nếu không bằng thì in ra là sai.

a = 100
if [a == 100]:
    print['Dung']
else:
    print['Sai']
# Ket qua: Dung

Nếu như trong trường hợp chúng ta không cần thực thi điều gì khi điều kiện đó không đúng thì chúng ta có thể bỏ mệnh đề else cho gọn code.

VD: Mình sẽ bỏ mệnh đề else ở VD trên đi.

a = 100
if [a == 100]:
    print['Dung']
# Ket qua: Dung

Và đương nhiên là chúng ta cũng có thể lồng các if đó lại với nhau được.

VD: Viết chương trình kiểm tra xem điểm có hợp lệ hay không, nếu hợp lệ thì in ra là với điểm đó thì qua môn hay học lại

a = 7
if [a >= 0 and a = 4]:
        print['Qua mon']
    else:
        print['Hoc lai']
else:
    print['Diem khong hop le']
# Ket qua: Qua mon

Câu lệnh if-elif-else.

Trong thực tế thì không phải lúc nào chúng ta cũng có 2 trường hợp nếu thì. Mà có đôi lúc tồn tại vô vàn điều kiện khác nhau và để giải quyết điều này thì trong Python có cung cấp thêm co chúng ta mệnh đề if-elif-else với cú pháp như sau:

if condition:
    # code
elif condition2:
    # code
elif condition3:
    # code
else:
    #code

Trong đó, thì sau các mệnh đề ifelif sẽ tồn tại các điều kiện condition tương ứng, và nếu như các điều kiện đó đúng thì code ở trong mệnh đề đó sẽ được thực hiện.

VD: Mình sẽ giải quyết lại bài toán tính điểm ở trên bằng mệnh đề if-elif-else.

a = 9
if [a >= 4 and a = 0 and a >> a = 0
>>> b = 3
>>>
>>> if a - 1 < 0: # [a – 1 < 0] có giá trị là True
...     print['a nhỏ hơn 1']
...
a nhỏ hơn 1
>>>
>>> if b - 1 < 0: # [b – 1  < 0] có giá trị là False
...     print['b nhỏ hơn 1']
...
>>>

If – else if

Đây là bản nâng cấp của cấu trúc if vừa rồi chúng ta tìm hiểu. Nó có cấu trúc như sau:

if expression:

    # If-block

elif 2-expression:

    2-if-block

elif 3-expression:

    # 3-if-block

elif n-expression:

    # n-if-block

Ở đây, bạn có thể đặt bao nhiêu lần nếu cũng được. Và từ câu lệnh if đến lần elif lần thứ n – 1 [câu lệnh với n-expression] là một khối, ta sẽ đặt cho nó một cái tên là khối BIG để dễ hiểu. Nó sẽ hoạt động như sau:

Bước 1: Kiểm tra xem expression có phải là một giá trị Boolean True hay không?

Bước 2: Nếu có, thực hiện if-block sau đó kết thúc khối BIG. Không thì chuyển sang Bước 3.

Bước 3:Kiểu tra xem 2-expression có phải là một giá trị Boolean True hay không?

Bước 4: Nếu có, thực hiện 2-if-block sau đó kết thúc khối BIG. Không thì chuyển sang Bước 5.

Bước 5:Kiểm tra xem 3-expression có phải là một giá trị Boolean True hay không?

Bước 6:Nếu có, thực hiện 3-if-block sau đó kết thúc khối BIG. Không thì chuyển sang Bước 7

Bước [n - 1] x 2: Kiểm tra xem n-expression có phải là một giá trị Boolean True hay không?

Bước [n – 1] x 2 + 1: Nếu có, thực hiện n-if-block.

Bước [n – 1] x 2 + 2: Kết thúc khối BIG.

Ví dụ để các bạn dễ hiểu hơn

>>> a = 3
>>>
>>> if a - 1 < 0: # False, tiếp tục
...     print['a nhỏ hơn 1']
... elif a - 2 < 0: # False, tiếp tục
...     print['a nhỏ hơn 2']
... elif a - 3 < 0: # False, tiếp tục
...     print['a nhỏ hơn 3']
... elif a - 4 < 0: # True, kết thúc
...     print['a nhỏ hơn 4']
... elif a - 5 < 0: # Khối BIG đã kết thúc, dù đây là True nhưng không ý nghĩa
...     print['a nhỏ hơn 5']
...
a nhỏ hơn 4

If - else

Cấu trúc vừa rồi không biết có làm bạn đau đầu hay không. Nếu có, hãy thư giãn vì cấu trúc sau đây đơn giản hơn nhiều.

if expression:

    # If-block

else:

    # else-block

Nếu expression là một giá trị Boolean True, thực hiện if-block và kết thúc. Không quan tâm đến else-block. Còn nếu không sẽ thực hiện else-block và kết thúc.

Ví dụ:

>>> a = 0
>>> b = 3
>>>
>>> if a - 1 < 0:
...     print['a nhỏ hơn 1']
... else:
...     print['a lớn hơn hoặc bằng 1']
...
a nhỏ hơn 1
>>>
>>> if b - 1 < 0: # False, nên sẽ thực hiện else-block
...     print['b nhỏ hơn 1']
... else:
...     print['b lớn hơn hoặc bằng 1']
...
b lớn hơn hoặc bằng 1

Shorthand if-else

Nếu các bạn đã từng học qua c++, thì các bạn sẽ biết rằng, trong c++ có hỗ trợ toán tử 3 ngôi như sau:

? : ;

Đừng quá lo lắng nếu như bạn không hiểu được lệnh trên. Hiểu một cách đơn giản, nếu là đúng, thì được sử dụng, còn nếu sai, thì chương trình sử dụng .

Python cũng hỗ trợ chức năng như thế:

if else ;

dụ:

>>> print['t bằng 5' if t == 5 else 't khác 5']
t bằng 5
>>> print['t bằng 3' if t == 3 else 't khác 3']
t khác 3

Shorthand if-else là một cú pháp tuy ngắn gọn, nhưng lại không được khuyến khích sử dụng vì nó khá dễ nhầm. Do đó, Kteam chỉ khuyến khích các bạn sử dụng nó một cách hạn chế nhất có thể.

If – else if - else

Nó không có gì mới mẻ nếu bạn nắm rõ 3 cấu trúc trên. Sau đây là cấu trúc của if – else if – else

if expression:

    # If-block

elif 2-expression:

    # 2-if-block

elif n-expression:

    # n-if-block

else:

    # else-block

Bạn có thể đặt bao nhiêu lần elif cũng được nhưng else thì chỉ một. Và từ câu lệnh ifđến câu lệnh else là một khối, ta cũng sẽ đặt cho nó một cái tên là khối BIG để dễ hiểu. Nó sẽ hoạt động như sau:

Bước 1: Kiểm tra xem expression có phải là một giá trị Boolean True hay không?

Bước 2: Nếu có, thực hiện if-block sau đó kết thúc khối BIG. Không thì chuyển sang Bước 3.

Bước 3: Kiểu tra xem 2-expression có phải là một giá trị Boolean True hay không?

Bước 4: Nếu có, thực hiện 2-if-block sau đó kết thúc khối BIG. Không thì chuyển sang Bước 5

Bước [n - 1] x 2: Kiểm tra xem n-expression có phải là một giá trị Boolean True hay không?

Bước [n – 1] x 2 + 1: Nếu có, thực hiện n-if-block sau đó kết thúc khối BIG.

Bước [n – 1] x 2 + 2: Nếu không thì thực hiện else-block và kết thúc khối BIG.

Ví dụ:

>>> a = 0
>>> if a - 1 < 0:
...     print['a nhỏ hơn 1']
... elif a - 1 > 0:
...     print['a lớn hơn 1']
... else:
...     print['a bằng 1']
...
a nhỏ hơn 1
>>>
>>> b = 2
>>> if b - 1 < 0:
...     print['b nhỏ hơn 1']
... elif b - 1 > 0:
...     print['b lớn hơn 1']
... else:
...     print['b bằng 1']
...
b lớn hơn 1
>>>
>>> c = 1
>>> if c - 1 < 0:
...     print['c nhỏ hơn 1']
... elif c - 1 > 0:
...     print['c lớn hơn 1']
... else:
...     print['c bằng 1']
...
c bằng 1

Cấu trúc điều kiện match-case

Đây là một cấu trúc mới trong Python 3.10 [tất cả các phiên bản cũ hơn không được hỗ trợ]. Thay vì kiểm tra các điều kiện, nó kiểm tra các trường hợp có thể xảy ra đối với một giá trị

Ví dụ:

>>> t = 5
>>> match t:
...     case 1: # Thực hiện lệnh bên trong nếu t = 1, tương đương với if t == 1
...             print["t = 1"]
...     case 2: # Thực hiện lệnh bên trong nếu t = 2, tương đương với if t == 2
...             print["t = 2"]
...     case 3: # Thực hiện lệnh bên trong nếu t = 3, tương đương với if t == 3
...             print["t = 3"]
...     case _: # Lệnh bên trong được thực hiện nếu như tất cả các lệnh bên trên đều bị bỏ qua
...             print["t > 3"]
...
t > 3

Từ ví dụ trên, ta có thể suy ra cú pháp của nó như sau:

match :

    case :

       

    case :

       

    case :

       

    case _:

       

Cũng gần tương tự như if, chương trình sẽ so sánh giá trị của subject với pattern của từng case, nếu như tìm thấy giá trị phù hợp, nó sẽ thực hiện action tương ứng và kết thúc khối lệnh match-case. Trong trường hợp tất cả các pattern đều không phù hợp, chương trình sẽ thực hiện các lệnh bên trong lệnh case cuối [tại đó, ta có thể để bất cứ thứ gì, nhưng thông thường, ta nên để dấu “_”].

Lưu ý: Kteam xin lưu ý các bạn trường hợp sau:

>>> t = 1
>>> match t:
...     case 1: # case [1]
...         print["t = 1"]
...     case 1: # case [2]
...         print["t là 1"]
...
t = 1

Ở trường hợp trên, chương trình chỉ thực hiện các lệnh bên trong case [1], sau đó thoát luôn mà bỏ qua case [2]. Nếu có các case trùng pattern, thì chỉ có case đầu tiên được thực hiện, các case bên dưới bị bỏ qua.

Ngoài ra, ta cũng có thể sử dụng toán tử or, hoặc lệnh if với case để mở rộng pattern:

>>> t = 5
>>> match t:
...     case 1 | 3 | 5 | 7 | 9:
...         print["t là số lẻ bé hơn 10"]
...     case 2 | 4 | 6 | 8:
...         print["t là số chẵn bé hơn 10"]
...     case _:
...         print["t bằng 0"]
...
t là số lẻ bé hơn 10
>>> x = 0
>>> t = 4
>>> match t:
...     case 4 if x == 1:
...         print["t = 4 và x = 1"]
...     case 4 if x == 0:
...         print["t = 0 và x = 0"]
...
t = 0 và x = 0

Block trong Python

Với đa số ngôn ngữ lập trình hiện nay, thường dùng cặp dấu ngoặc { } để phân chia các block.

Riêng đối với Python lại sử dụng việc định dạng code để suy ra các block. Đây là điều giúp code Python luôn luôn phải đẹp mắt.

Một số điều lưu ý về việc định dạng code block trong Python:

  • Câu lệnh mở block kết thúc bằng dấu hai chấm [:], sau khi sử dụng câu lệnh có dấu hai chấm [:] buộc phải xuống dòng và lùi lề vào trong và có tối thiểu một câu lệnh để không bỏ trống block.
  • Những dòng code cùng lề thì là cùng một block.
  • Một block có thể có nhiều block khác.
  • Khi căn lề block không sử dụng cả tab lẫn space.
  • Nên sử dụng 4 space để căn lề một block

Sau đây là một hình minh họa của Kteam.

Các câu lệnh nằm trong một khung màu là một block, và  block đó được mở bởi câu lệnh nằm ngay bên trên khung màu.

Lưu ý: Kteam có đề cập đến việc sau khi sử dụng câu lệnh có dấu hai chấm [:] buộc phải xuống dòng và lùi lề vào trong. Tuy nhiên, Bạn vẫn có thể đi ngược lại điều này trong một vài trường hợp

  • Ví dụ:
>>> a = 3
>>> if a - 1 > 0: print['a lớn hơn 1']
...
a lớn hơn 1
>>> if a - 1 > 0: print['a lớn hơn 1']; print['có thể a lớn hơn 2']
...
a lớn hơn 1
có thể a lớn hơn 2

Tuy nhiên, việc sử dụng như vậy không được khuyến khích vì chỉ tiết kiếm được một vài dòng code mà lại gây khó đọc thì không đáng để tiết kiệm.

Và bạn cũng đã biết thêm một điều Python không hề cấm dấu chấm phẩy [;]. Nó vẫn là một cú pháp hợp lệ. Nếu bạn quen tay có thể dùng dấu chấm phẩy [;] thoải mái.

Củng cố bài học

Câu hỏi củng cố

Nhập từ bàn phím 3 số, in ra số lớn nhất [cố gắng ít dòng code nhất có thể - ở đây không tính việc nhập dữ liệu]

Đáp án của phần này sẽ được trình bày ở bài tiếp theo. Tuy nhiên, Kteam khuyến khích bạn tự trả lời các câu hỏi để củng cố kiến thức cũng như thực hành một cách tốt nhất! 

Kết luận

Qua bài viết này, Bạn đã biết về CÂU ĐIỀU KIỆN IF TRONG PYTHON.

Ở bài viết sau. Kteam sẽ nói về khái niệm vòng lặp và biết tới CẤU TRÚC VÒNG LẶP WHILE TRONG PYTHON.

Cảm ơn bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.

Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Chủ Đề