Cách viết các nhánh có điều kiện với câu lệnh if trong Python

Kinh doanh

Giải thích phân nhánh có điều kiện với câu lệnh if trong Python.

  • Khái niệm cơ bản về câu lệnh if (if, elif, else)
  • Chỉ định điều kiện bằng các toán tử so sánh, v.v.
  • Chỉ định điều kiện theo số, danh sách, v.v.
  • Chỉ định nhiều điều kiện hoặc phủ định bằng toán tử logic (và, hoặc, không)
  • Biểu thức điều kiện trên các dòng mới và nhiều dòng

Ngoài ra còn có một toán tử bậc ba mô tả một nhánh có điều kiện trong một dòng. Xem bài viết sau.

Khái niệm cơ bản về câu lệnh if (if, elif, else)

Dạng cơ bản của câu lệnh if như sau

if Conditional expression 1:
    `Processing to be performed if Expression 1 is True.`
elif Conditional expression 2:
    `Processing to be performed when expression 1 is false and expression 2 is true.`
elif Expression 3:
    `Process when expression 1 and 2 are false and expression 3 is true.`
...
else:
    `Processing when all conditionals are false.`

“Elif” tương ứng với “else if” trong C và các ngôn ngữ khác, và có thể có bất kỳ số lượng “elif” nào.

Nếu chỉ có một biểu thức điều kiện hoặc xử lý sai khi không cần thiết, các khối “elif” và “else” có thể được bỏ qua.

Chỉ định điều kiện bằng các toán tử so sánh, v.v.

Chỉ định điều kiện bằng một phép toán trả về kiểu bool (true, false), chẳng hạn như toán tử so sánh.

Các toán tử so sánh trong Python như sau

nhà điều hànhkết quả
x < yđúng nếu x nhỏ hơn y
x <= yđúng nếu x nhỏ hơn hoặc bằng y
x > yđúng nếu x lớn hơn y
x >= yđúng nếu x lớn hơn hoặc bằng y
x == yđúng nếu giá trị x và y bằng nhau
x != yđúng nếu giá trị x và y không bằng nhaux is yđúng nếu x và y là cùng một đối tượngx is not yđúng nếu x và y không phải là cùng một đối tượngx in ytrue nếu x được chứa trong yx not in yđúng nếu x không chứa trong y

Ví dụ. Để thuận tiện, nó được định nghĩa là một hàm với câu lệnh def.

def if_test(num):
    if num > 100:
        print('100 < num')
    elif num > 50:
        print('50 < num <= 100')
    elif num > 0:
        print('0 < num <= 50')
    elif num == 0:
        print('num == 0')
    else:
        print('num < 0')

if_test(1000)
# 100 < num

if_test(70)
# 50 < num <= 100

if_test(0)
# num == 0

if_test(-100)
# num < 0

Phần sau có thể được viết theo cách dành riêng cho Python. Xem chi tiết bài viết sau.
a < x < b

def if_test2(num):
    if 50 < num < 100:
        print('50 < num < 100')
    else:
        print('num <= 50 or num >= 100')

if_test2(70)
# 50 < num < 100

if_test2(0)
# num <= 50 or num >= 100
  • #ERROR!
  • !=

Trên đây là so sánh các giá trị; để so sánh danh tính đối tượng, hãy sử dụng

  • is
  • is not

Ví dụ: khi so sánh một số nguyên và một số dấu phẩy động, “==” trả về true nếu các giá trị tương đương nhau, nhưng “is” trả về false vì chúng là các đối tượng khác nhau.

i = 10
print(type(i))
# <class 'int'>

f = 10.0
print(type(f))
# <class 'float'>

print(i == f)
# True

print(i is f)
# False

Cũng có thể tạo điều kiện cho dù một danh sách hoặc một chuỗi có chứa một phần tử cụ thể (ký tự) hay không.

  • in:bao gồm
  • not in:không bao gồm
def if_test_in(s):
    if 'a' in s:
        print('a is in string')
    else:
        print('a is NOT in string')

if_test_in('apple')
# a is in string

if_test_in('melon')
# a is NOT in string

Chỉ định điều kiện theo số, danh sách, v.v.

Biểu thức điều kiện của câu lệnh if có thể là một số, danh sách hoặc đối tượng khác không thuộc kiểu bool (true, false).

if 10:
    print('True')
# True

if [0, 1, 2]:
    print('True')
# True

Trong biểu thức điều kiện của câu lệnh if Python, các đối tượng sau được coi là sai.

Các số đại diện cho số 0, chuỗi rỗng, danh sách, v.v. được coi là sai; tất cả những người khác được coi là đúng.

Đối tượng được đánh giá như thế nào có thể được kiểm tra bằng bool ().

print(bool(10))
# True

print(bool(0.0))
# False

print(bool([]))
# False

print(bool('False'))
# True

Ví dụ, điều này có thể được sử dụng để viết tiến trình khi danh sách trống.

def if_test_list(l):
    if l:
        print('list is NOT empty')
    else:
        print('list is empty')

if_test_list([0, 1, 2])
# list is NOT empty

if_test_list([])
# list is empty

Lưu ý rằng chuỗi ‘False’ cũng sẽ đúng, vì như thể hiện trong ví dụ trên, bất kỳ chuỗi nào không trống trong chuỗi sẽ là đúng. ‘ Để chuyển đổi một chuỗi cụ thể như ‘True’ hoặc ‘False’ thành 1,0, hãy sử dụng strtobool () trong mô-đun distutils.util.

Chỉ định nhiều điều kiện hoặc phủ định bằng toán tử logic (và, hoặc, không)

Các toán tử logic (và, hoặc không) có thể được sử dụng để xử lý kết hợp logic, tách rời logic và phủ định của nhiều điều kiện.

nhà điều hành(Kết quả (trong biểu thức điều kiện của câu lệnh if)
x and yđúng nếu cả x và y đều đúng
x or yđúng nếu x hoặc y là đúng
not xfalse nếu x đúng, đúng nếu x sai
def if_test_and_not(num):
    if num >= 0 and not num % 2 == 0:
        print('num is positive odd')
    else:
        print('num is NOT positive odd')

if_test_and_not(5)
# num is positive odd

if_test_and_not(10)
# num is NOT positive odd

if_test_and_not(-10)
# num is NOT positive odd

Trên thực tế, “x và y” và “x hoặc y” không trả về True hoặc False, mà là x hoặc y. Miễn là chúng được sử dụng trong biểu thức điều kiện trong câu lệnh if, không cần phải lo lắng về chúng, vì chúng đánh giá là Đúng hoặc Sai. Xem chi tiết bài viết sau.

Có thể sử dụng và và hoặc nhiều hơn một lần.

def if_test_and_not_or(num):
    if num >= 0 and not num % 2 == 0 or num == -10:
        print('num is positive odd or -10')
    else:
        print('num is NOT positive odd or -10')

if_test_and_not_or(5)
# num is positive odd or -10

if_test_and_not_or(10)
# num is NOT positive odd or -10

if_test_and_not_or(-10)
# num is positive odd or -10

Biểu thức điều kiện trên các dòng mới và nhiều dòng

Khi nhiều biểu thức điều kiện được sử dụng bằng cách nối chúng với “và” hoặc “hoặc” và mỗi dòng trở nên dài, đôi khi cần phải ngắt biểu thức điều kiện và viết nó trên nhiều dòng.

Có thể thực hiện ngắt dòng bằng cách sử dụng dấu gạch chéo ngược hoặc bằng cách đặt toàn bộ dòng trong dấu ngoặc đơn.

def if_test_and_backslash(num):
    if num >= 0 \
       and not num % 2 == 0:
        print('num is positive odd')
    else:
        print('num is NOT positive odd')

if_test_and_backslash(5)
# num is positive odd

def if_test_and_brackets(num):
    if (num >= 0
        and not num % 2 == 0):
        print('num is positive odd')
    else:
        print('num is NOT positive odd')

if_test_and_brackets(5)
# num is positive odd

Bạn có thể sử dụng dấu gạch chéo ngược để ngắt dòng bao nhiêu lần tùy thích. Tương tự như vậy, bạn có thể ngắt dòng bất kỳ số lần nào trong dấu ngoặc đơn. Không có giới hạn thụt lề.

Lưu ý rằng đây là một kỹ thuật có thể được sử dụng ở bất kỳ đâu trong mã Python, không chỉ trong các câu lệnh if.