Học bằng cách đọc theo thứ tự

Boolean và xây dựng điều kiện

Học Boolean và câu lệnh if trong Python: True / False, toán tử so sánh và logic and / or / not để dựng điều kiện cho code của bạn.

Boolean (bool) là gì?

Boolean (bool) là một kiểu chỉ chứa được hai giá trị: TrueFalse. Đó là cách Python biểu diễn các trạng thái kiểu có/không hoặc đúng/sai — về cơ bản là bất cứ thứ gì có hai lựa chọn.

Giống như int xử lý số và str xử lý chuỗi, bool là kiểu chuyên biệt cho giá trị chân lý.

Các giá trị duy nhất bool có thể nhận
kiểu boolTrue(đúng)False(sai)giá trị 1giá trị 2

Không như các kiểu khác, bool chỉ giới hạn ở hai giá trị — True và False. Chính điều đó giúp nó phối hợp rất tốt với gán, so sánh và rẽ nhánh điều kiện.

TrueFalse phải viết hoa chữ cái đầu. Viết true hoặc TRUE bạn sẽ nhận NameError.

Chúng cũng không phải chuỗi, nên đừng bọc chúng trong dấu nháy như "True" (điều đó biến chúng thành str).

# Gán giá trị bool
is_animal = True
is_human = False

print(is_animal)        # True
print(is_human)         # False
print(type(is_animal))  # <class 'bool'>

# Viết "True" biến nó thành str (khác hoàn toàn)
looks_bool = "True"
print(type(looks_bool)) # <class 'str'>

Tạo một biến bool trong terminal.

① Gán True cho is_student và in ra bằng print().

② Hiện kiểu của is_student bằng type().

Python Editor

Chạy code để xem đầu ra

So sánh tạo ra boolean

Bạn không chỉ có boolean khi gõ True / Falsecác toán tử so sánh cũng tạo ra chúng.

Python có sáu toán tử so sánh, và mỗi toán tử luôn trả về True hoặc False (tức là bool).

Toán tửÝ nghĩaVí dụKết quả
==bằng5 == 5True
!=khác5 != 3True
>lớn hơn5 > 3True
<nhỏ hơn5 < 3False
>=lớn hơn hoặc bằng5 >= 5True
<=nhỏ hơn hoặc bằng5 <= 3False
Dòng chảy của một phép so sánh
age = 20age >= 18Trueage < 18Falseước lượngkết quảước lượngkết quả

Khi một biểu thức được ước lượng, nó trả về True hoặc False. Bạn cũng có thể lưu kết quả đó vào biến và dùng lại.

age = 20

print(age == 20)      # True  (bằng)
print(age != 18)      # True  (khác)
print(age >= 18)      # True  (>=)
print(age < 18)       # False (<)

# Bạn có thể lưu kết quả vào biến
is_adult = age >= 18
print(is_adult)       # True
print(type(is_adult)) # <class 'bool'>

# Chuỗi cũng so sánh được (== và != là thông dụng nhất)
print("apple" == "apple")  # True
print("apple" == "Apple")  # False (phân biệt hoa thường)

= và == khác nhau

= (một dấu bằng) là phép gán, còn == (hai dấu bằng) là phép so sánh. age = 20 nghĩa là "đặt 20 vào age", còn age == 20 hỏi "age có bằng 20 không?". Nhầm lẫn hai cái này là cách dễ dàng đưa vào một bug khó phát hiện, nên hãy phân biệt rõ.

Bắt đầu từ score = 75, xác nhận rằng so sánh tạo ra boolean.

① In kết quả của score == 100.

② Đặt kết quả của score >= 60 vào biến passed, rồi in ra.

③ Hiện kiểu của passed bằng type().

Python Editor

Chạy code để xem đầu ra

Dùng boolean trong câu lệnh if

Nơi bạn sẽ gặp boolean nhiều nhất là câu lệnh if (rẽ nhánh điều kiện). Khối bên trong chỉ chạy khi biểu thức sau if là True.

Chúng ta sẽ bàn sâu hơn về if sau — bây giờ cứ cảm nhận cách bool thay đổi hành vi.

if và bool
if True: print(...)chạy khốicó kết quảif False: print(...)bỏ quakhông có kết quảTrueprintFalsebỏ qua

Kết thúc dòng if bằng dấu hai chấm :, và viết thân với thụt lề 4 dấu cách. Thụt lề đó là thứ nói cho Python biết dòng nào thuộc if.

is_animal = True

# Chạy vì is_animal là True
if is_animal:
    print("Là động vật")

# Bị bỏ qua vì is_human là False — không in gì
is_human = False
if is_human:
    print("Là con người")

# Bạn có thể đặt phép so sánh thẳng vào if
age = 20
if age >= 18:
    print("Người lớn")

Luyện rẽ nhánh với các boolean khác nhau.

① Định nghĩa is_open = True và in "MỞ CỬA" khi nó là True.

② Định nghĩa temperature = 35 và in "Ngày nóng" khi temperature >= 30.

Python Editor

Chạy code để xem đầu ra

Toán tử logic: and / or / not

Khi bạn muốn kết hợp nhiều điều kiện, hãy dùng các toán tử logic and / or / not.

Chúng nhận boolean làm đầu vào và trả về boolean — tương ứng với "and" (và), "or" (hoặc), "not" (không).

and / or / not khác nhau thế nào
and(cả hai)True and TrueTrueor(một trong)True or FalseTruenot(đảo)not TrueFalseví dụkết quảví dụkết quảví dụđảo

and là True chỉ khi cả hai vế đều True.

or là True khi có vế nào đó True.

not đảo True và False.

Bảng chân lý

Kết quả của andor hoàn toàn được xác định bởi các boolean bên trái và bên phải. Nghĩ về chúng như giao (and) và hợp (or) sẽ dễ hình dung.

ABA and BA or B
TrueTrueTrueTrue
TrueFalseFalseTrue
FalseTrueFalseTrue
FalseFalseFalseFalse
is_man = True
is_adult = True

# and: True chỉ khi cả hai True
if is_man and is_adult:
    print("Đàn ông trưởng thành")

# or: True khi ít nhất một là True
if is_man or is_adult:
    print("Đàn ông hoặc người lớn")

# not: đảo giá trị
is_child = not is_adult
print(is_child)          # False

# Kết hợp với so sánh
age = 25
if age >= 18 and age < 65:
    print("Người lớn trong độ tuổi lao động")

Dùng is_member = Trueage = 15, thử các toán tử logic.

① In kết quả của is_member and age >= 18.

② In kết quả của is_member or age >= 18.

③ In kết quả của not is_member.

Python Editor

Chạy code để xem đầu ra

Đừng viết &&, ||, !

Một số ngôn ngữ khác dùng &&, ||!, nhưng Python luôn dùng and, or và not (từ tiếng Anh). Viết && sẽ cho bạn SyntaxError.

Trong bài này, bạn đã học về kiểu boolean (bool) và cách dùng nó. Bạn thấy bool chỉ chứa hai giá trị, rằng so sánh tạo ra boolean, rằng câu lệnh if cho phép rẽ nhánh dựa trên chúng, và rằng and / or / not cho phép kết hợp điều kiện — nền tảng cho mọi điều kiện bạn sẽ viết.

Tiếp theo, chúng ta sẽ tìm hiểu kỹ hơn về số với kiểu intfloat.

QUIZ

Kiểm tra kiến thức

Hãy trả lời từng câu hỏi một.

Câu 1Đáp án nào là giá trị bool hợp lệ?

Câu 2Đoạn code này in gì?
x = 10
print(x == 10 and x < 5)

Câu 3Đoạn code này in gì?
is_open = False
print(not is_open)