Boolean và Kiểu dữ liệu Boolean
Trong Python, Boolean là một kiểu dữ liệu logic chỉ có hai giá trị: True (đúng) hoặc False (sai). Boolean được sử dụng rất nhiều trong các biểu thức điều kiện, vòng lặp và logic của chương trình.
1. Giới thiệu về Boolean
Phần tiêu đề “1. Giới thiệu về Boolean”Định nghĩa
Phần tiêu đề “Định nghĩa”Boolean là kiểu dữ liệu chỉ có hai giá trị:
True- đại diện cho giá trị đúngFalse- đại diện cho giá trị sai
Lưu ý: Trong Python, True và False phải viết hoa chữ cái đầu tiên.
# Khai báo biến Booleanis_student = Trueis_adult = False
print(is_student) # Trueprint(is_adult) # False
# Kiểm tra kiểu dữ liệuprint(type(is_student)) # <class 'bool'>Boolean từ biểu thức so sánh
Phần tiêu đề “Boolean từ biểu thức so sánh”Boolean thường được tạo ra từ các phép so sánh:
# So sánh bằngprint(5 == 5) # Trueprint(5 == 3) # False
# So sánh không bằngprint(5 != 3) # Trueprint(5 != 5) # False
# So sánh lớn hơn, nhỏ hơnprint(10 > 5) # Trueprint(10 < 5) # Falseprint(10 >= 10) # Trueprint(5 <= 3) # False
# So sánh chuỗiprint("apple" == "apple") # Trueprint("apple" == "Apple") # False (phân biệt hoa thường)2. Các toán tử Boolean (Logical Operators)
Phần tiêu đề “2. Các toán tử Boolean (Logical Operators)”Python có ba toán tử logic chính để làm việc với Boolean:
Toán tử AND (và)
Phần tiêu đề “Toán tử AND (và)”Trả về True chỉ khi tất cả các điều kiện đều đúng.
# Cả hai điều kiện đều đúngprint(True and True) # True
# Một trong hai saiprint(True and False) # Falseprint(False and True) # False
# Cả hai đều saiprint(False and False) # False
# Ví dụ thực tếage = 20is_student = Trueprint(age >= 18 and is_student) # True (cả hai điều kiện đều đúng)
# Nhiều điều kiệnx = 5print(x > 0 and x < 10 and x != 7) # TrueToán tử OR (hoặc)
Phần tiêu đề “Toán tử OR (hoặc)”Trả về True khi ít nhất một điều kiện đúng.
# Ít nhất một điều kiện đúngprint(True or False) # Trueprint(False or True) # Trueprint(True or True) # True
# Cả hai đều saiprint(False or False) # False
# Ví dụ thực tếhas_ticket = Falseis_vip = Truecan_enter = has_ticket or is_vipprint(can_enter) # True (chỉ cần một điều kiện đúng)Toán tử NOT (phủ định)
Phần tiêu đề “Toán tử NOT (phủ định)”Đảo ngược giá trị Boolean.
# Đảo ngược giá trịprint(not True) # Falseprint(not False) # True
# Ví dụ thực tếis_raining = Falseprint(not is_raining) # True (không mưa)
# Kết hợp với các toán tử khácx = 5print(not (x > 10)) # True (x không lớn hơn 10)Thứ tự ưu tiên của toán tử
Phần tiêu đề “Thứ tự ưu tiên của toán tử”Thứ tự ưu tiên từ cao đến thấp: not > and > or
# Ví dụ về thứ tự ưu tiênresult = True or False and Falseprint(result) # True# Giải thích: False and False được tính trước = False# Sau đó: True or False = True
# Sử dụng dấu ngoặc để làm rõresult = (True or False) and Falseprint(result) # False3. Truthy và Falsy Values
Phần tiêu đề “3. Truthy và Falsy Values”Trong Python, không chỉ True và False mới có giá trị Boolean. Nhiều giá trị khác cũng được coi là “truthy” (tương đương True) hoặc “falsy” (tương đương False).
Các giá trị Falsy (được coi là False)
Phần tiêu đề “Các giá trị Falsy (được coi là False)”# Các giá trị sau được coi là False:
# 1. Falseprint(bool(False)) # False
# 2. Noneprint(bool(None)) # False
# 3. Số 0 (bất kỳ kiểu số nào)print(bool(0)) # Falseprint(bool(0.0)) # Falseprint(bool(0j)) # False
# 4. Chuỗi rỗngprint(bool("")) # False
# 5. Danh sách rỗngprint(bool([])) # False
# 6. Tuple rỗngprint(bool(())) # False
# 7. Dictionary rỗngprint(bool({})) # False
# 8. Set rỗngprint(bool(set())) # FalseCác giá trị Truthy (được coi là True)
Phần tiêu đề “Các giá trị Truthy (được coi là True)”# Tất cả các giá trị khác đều được coi là True:
# Số khác 0print(bool(1)) # Trueprint(bool(-5)) # Trueprint(bool(3.14)) # True
# Chuỗi không rỗngprint(bool("Hello")) # Trueprint(bool(" ")) # True (khoảng trắng vẫn là ký tự)
# List, tuple, dict, set không rỗngprint(bool([1, 2])) # Trueprint(bool((1,))) # Trueprint(bool({"a": 1})) # Trueprint(bool({1, 2})) # TrueỨng dụng của Truthy/Falsy
Phần tiêu đề “Ứng dụng của Truthy/Falsy”# Kiểm tra danh sách có rỗng khôngmy_list = []if not my_list: print("Danh sách rỗng") # In ra dòng này
# Kiểm tra chuỗi có giá trị khôngname = input("Nhập tên: ")if name: print(f"Xin chào, {name}!")else: print("Bạn chưa nhập tên")
# Giá trị mặc địnhuser_input = ""value = user_input or "Giá trị mặc định"print(value) # Giá trị mặc định4. Hàm bool()
Phần tiêu đề “4. Hàm bool()”Hàm bool() chuyển đổi một giá trị thành Boolean.
# Chuyển đổi sốprint(bool(10)) # Trueprint(bool(0)) # Falseprint(bool(-5)) # True
# Chuyển đổi chuỗiprint(bool("Python")) # Trueprint(bool("")) # False
# Chuyển đổi listprint(bool([1, 2, 3])) # Trueprint(bool([])) # False
# So sánh trực tiếpnumber = 5is_positive = bool(number > 0)print(is_positive) # True5. Boolean trong câu lệnh điều kiện
Phần tiêu đề “5. Boolean trong câu lệnh điều kiện”Boolean được sử dụng chủ yếu trong các câu lệnh điều kiện:
# If statementage = 18if age >= 18: print("Bạn đã trưởng thành")else: print("Bạn chưa trưởng thành")
# While loopcount = 0while count < 5: print(count) count += 1
# Kết hợp nhiều điều kiệnscore = 85attendance = 90
if score >= 80 and attendance >= 80: print("Đạt yêu cầu")else: print("Không đạt yêu cầu")6. Các hàm trả về Boolean
Phần tiêu đề “6. Các hàm trả về Boolean”Nhiều hàm và phương thức trong Python trả về giá trị Boolean:
Kiểm tra chuỗi
Phần tiêu đề “Kiểm tra chuỗi”text = "Hello World"
# Kiểm tra chữ cáiprint(text.isalpha()) # False (có khoảng trắng)print("Hello".isalpha()) # True
# Kiểm tra chữ sốprint("123".isdigit()) # Trueprint("12.3".isdigit()) # False
# Kiểm tra chữ và sốprint("Hello123".isalnum()) # True
# Kiểm tra chữ thường/hoaprint("hello".islower()) # Trueprint("HELLO".isupper()) # True
# Kiểm tra khoảng trắngprint(" ".isspace()) # True
# Kiểm tra bắt đầu/kết thúcprint("Hello".startswith("He")) # Trueprint("Hello".endswith("lo")) # TrueKiểm tra membership (in/not in)
Phần tiêu đề “Kiểm tra membership (in/not in)”# Kiểm tra trong chuỗiprint("H" in "Hello") # Trueprint("x" in "Hello") # Falseprint("x" not in "Hello") # True
# Kiểm tra trong listnumbers = [1, 2, 3, 4, 5]print(3 in numbers) # Trueprint(10 in numbers) # False
# Kiểm tra trong dictionary (kiểm tra key)person = {"name": "John", "age": 30}print("name" in person) # Trueprint("John" in person) # False (kiểm tra key, không phải value)Kiểm tra identity (is/is not)
Phần tiêu đề “Kiểm tra identity (is/is not)”# So sánh identity (cùng object trong bộ nhớ)a = [1, 2, 3]b = [1, 2, 3]c = a
print(a == b) # True (giá trị giống nhau)print(a is b) # False (khác object)print(a is c) # True (cùng object)
# Với None nên dùng 'is'value = Noneprint(value is None) # True (cách đúng)print(value == None) # True (nhưng không khuyến khích)
# Với số nhỏ và chuỗi ngắn (Python cache)x = 5y = 5print(x is y) # True (Python cache số nhỏ)
a = "hello"b = "hello"print(a is b) # True (Python cache chuỗi ngắn)7. Short-circuit Evaluation
Phần tiêu đề “7. Short-circuit Evaluation”Python sử dụng short-circuit evaluation với and và or:
Short-circuit với AND
Phần tiêu đề “Short-circuit với AND”# Nếu điều kiện đầu False, không kiểm tra điều kiện saudef check_value(): print("Hàm được gọi") return True
# False and ... → không gọi hàm check_value()result = False and check_value()print(result) # False (không in "Hàm được gọi")
# True and ... → gọi hàm check_value()result = True and check_value()# In ra: "Hàm được gọi"print(result) # TrueShort-circuit với OR
Phần tiêu đề “Short-circuit với OR”def check_value(): print("Hàm được gọi") return False
# True or ... → không gọi hàm check_value()result = True or check_value()print(result) # True (không in "Hàm được gọi")
# False or ... → gọi hàm check_value()result = False or check_value()# In ra: "Hàm được gọi"print(result) # FalseỨng dụng thực tế
Phần tiêu đề “Ứng dụng thực tế”# Tránh lỗi division by zerox = 5y = 0
# Cách 1: Kiểm tra trước khi chiaif y != 0 and x / y > 1: print("Thỏa mãn điều kiện")else: print("Không thỏa mãn") # In ra dòng này
# Cách 2: Giá trị mặc địnhname = Nonedisplay_name = name or "Khách"print(display_name) # Khách8. Bài tập thực hành
Phần tiêu đề “8. Bài tập thực hành”Bài 1: Kiểm tra số chẵn lẻ
Phần tiêu đề “Bài 1: Kiểm tra số chẵn lẻ”number = int(input("Nhập một số: "))is_even = (number % 2 == 0)
if is_even: print(f"{number} là số chẵn")else: print(f"{number} là số lẻ")Bài 2: Kiểm tra năm nhuận
Phần tiêu đề “Bài 2: Kiểm tra năm nhuận”year = int(input("Nhập năm: "))
# Năm nhuận: chia hết cho 4 NHƯNG không chia hết cho 100# HOẶC chia hết cho 400is_leap_year = (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)
if is_leap_year: print(f"{year} là năm nhuận")else: print(f"{year} không phải năm nhuận")Bài 3: Kiểm tra tam giác hợp lệ
Phần tiêu đề “Bài 3: Kiểm tra tam giác hợp lệ”a = float(input("Nhập cạnh a: "))b = float(input("Nhập cạnh b: "))c = float(input("Nhập cạnh c: "))
# Điều kiện: tổng hai cạnh bất kỳ phải lớn hơn cạnh còn lạiis_valid_triangle = (a + b > c) and (b + c > a) and (a + c > b)
if is_valid_triangle: print("Ba cạnh tạo thành tam giác hợp lệ")else: print("Ba cạnh không tạo thành tam giác")Bài 4: Kiểm tra đăng nhập
Phần tiêu đề “Bài 4: Kiểm tra đăng nhập”# Thông tin đúngcorrect_username = "admin"correct_password = "12345"
# Nhập thông tinusername = input("Tên đăng nhập: ")password = input("Mật khẩu: ")
# Kiểm trais_valid_login = (username == correct_username) and (password == correct_password)
if is_valid_login: print("Đăng nhập thành công!")else: print("Sai tên đăng nhập hoặc mật khẩu")Bài 5: Xếp loại học sinh
Phần tiêu đề “Bài 5: Xếp loại học sinh”math_score = float(input("Điểm Toán: "))english_score = float(input("Điểm Tiếng Anh: "))science_score = float(input("Điểm Khoa học: "))
# Tính điểm trung bìnhaverage = (math_score + english_score + science_score) / 3
# Kiểm tra điều kiệnis_excellent = average >= 8 and math_score >= 7 and english_score >= 7 and science_score >= 7is_good = average >= 6.5 and not is_excellent
if is_excellent: print(f"Xếp loại: Giỏi (ĐTB: {average:.2f})")elif is_good: print(f"Xếp loại: Khá (ĐTB: {average:.2f})")else: print(f"Xếp loại: Trung bình (ĐTB: {average:.2f})")Tổng kết
Phần tiêu đề “Tổng kết”- Boolean có hai giá trị:
TruevàFalse - Toán tử logic:
and,or,not - Truthy values: các giá trị được coi là True (số khác 0, chuỗi không rỗng, list không rỗng, …)
- Falsy values: các giá trị được coi là False (
False,None,0,"",[],{},(), …) - Hàm
bool()chuyển đổi giá trị thành Boolean - So sánh:
==,!=,>,<,>=,<= - Membership:
in,not in - Identity:
is,is not - Python sử dụng short-circuit evaluation với
andvàor