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ành | kế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
x is y
x is not y
x in y
x not in 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ồmnot 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 hằng số được xác định là sai:
None
,false
- Số 0 ở kiểu số:
0
,0
,0j
,Decimal(0)
,Fraction(0, 1)
- Chuỗi hoặc bộ sưu tập trống:
'
,()
,[]
,{}
,set()
,range(0)
Truth Value Testing — Built-in Types — Python 3.10.4 Documentation
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 x | false 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Ó LIÊN QUAN:Các toán tử lôgic của Python “và, hoặc không” (kết hợp lôgic, phân chia lôgic, phủ định)
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.
- CÓ LIÊN QUAN:Viết chuỗi dài trên nhiều dòng bằng Python