Kiểu Logic Boolean Trong Python - O₂ Education

Kiểu logic Boolean trong Python

Kiểu logic trong Python kí hiệu là bool và gồm có hai giá trị là True hoặc False.

Trong bài viết  Câu lệnh điều kiện if trong Python, bạn đã sử dụng kiểu logic bool trong Python. Trong biểu thức <điều kiện> của câu lệnh rẽ nhánh if, kết quả của biểu thức đó là một trong hai giá trị True hoặc False. Bài viết này, chúng ta sẽ tìm hiểu sâu hơn về kiểu Boolean trong Python.

1. Giới thiệu về kiểu logic bool trong Python

  • Khi thực hiện các phép toán so sánh hoặc các phép toán (toán tử) logic, kết quả trả về chỉ có thể là đúng True hoặc sai False. Khi đó, ta sử dụng kiểu bool để biểu diễn các giá trị đúng và sau này. Để biểu diễn giá trị đúng, ta dùng từ khóa True, để biểu diễn giá trị sai ta dùng từ khóa False. Chúng được gọi là các giá trị logic trong Python.
  • True và False cũng giống như các số nguyên 0 và 1. Tuy nhiên, nếu ta ép kiểu từ số nguyên hoặc các kiểu dữ liệu khác sang kiểu bool thì mọi giá trị khác 0 hoặc khác rỗng đều tương ứng với True. Hãy xem ví dụ sau.
>>> True == 1 True >>> False == 0 True >>> True + True 2 >>> True == 2 False >>> bool(1) True >>> bool(10) True >>> bool("") False >>> bool("a") True

2. Các phép toán trên kiểu Boolean trong Python

2.1. Các toán tử so sánh

Kết quả trả về của các toán tử so sánh là kiểu boolean, tức là đúng True hoặc sai False. Python có các toán tử so sánh bằng nhau ==, khác nhau !=, lớn hơn >, nhỏ hơn <, lớn hơn hoặc bằng >=, nhỏ hơn hoặc bằng <=.

>>> a = 1 >>> b = 5 >>> c = 'abc' >>> d = 'aBc' >>> a == b False >>> a >= b False >>> c < d False >>> c != d True

Lưu ý rằng các toán tử so sánh này phải sử dụng với hai toán hạng có cùng kiểu, trong ví dụ trên nếu ta cố tình so sánh a và c thì Python sẽ báo lỗi:

>>> a < c Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: '<' not supported between instances of 'int' and 'str'

2.2. Các toán tử logic Boolean trong Python

  • Phép toán and sẽ trả về kết quả True nếu cả hai toán hạng đều là True.
  • Phép toán or sẽ trả về kết quả True nếu một trong hai toán hạng là True.
  • Phép toán not được sử dụng để đảo ngược giá trị chân lý của một biểu thức.

Bảng giả trị chân lý của các phép toán như sau:

toan tu bool trong Python Boolean trong Python

2.3. Toán tử in

Toán tử in được sử dụng để kiểm tra xem một giá trị/phần tử có tồn tại trong một tập hợp/chuỗi/danh sách… hay không, kết quả trả về là kiểu Boolean.

>>> A = [1,2,'3','o2'] >>> 1 in A True >>> '1' in A False >>> 3 in A False >>> '3' in A True

Đối với các số nguyên, có thể kết hợp với hàm range() để kiểm tra xem một số có nằm trong khoảng, đoạn nào không.

>>> 3 in range(1,10) True >>> 9 in range(1,10) True >>> 10 in range(1,10) False >>> 0 in range(1,10) False >>> 1 in range(1,10) True

2.4. Toán tử is

Toán tử is dùng để kiểm tra kiểu của một đối tượng trong Python, nó cũng dùng để kiểm tra xem hai toán hạng có cùng tham chiếu đến một đối tượng hay không.

>>> x=5 >>> x is int False >>> type(x) is int True >>> type(x) is float False >>> y = 5. >>> type(y) is float True

Bạn cần lưu ý, toán tử is có nghĩa là, nó khác với toán tử ==, nghĩa bằng nhau (về mặt giá trị). Để hiểu rõ hơn về sự khác nhau giữa hai toán tử này, chúng ta xem xét ví dụ sau đây.

Đầu tiên, chúng ta sẽ tạo một danh sách mới và đặt tên cho nó a, sau đó xác định một biến khác btrỏ đến cùng một đối tượng danh sách:

>>> a = [ 1 , 2 , 3 ] >>> b = a

Hãy kiểm tra giá trị của hai biến này. Bạn có thể thấy là hai danh sách giống hệt nhau:

>>> a [ 1 , 2 , 3 ] >>> b [ 1 , 2 , 3 ]

Bởi vì hai danh sách trông giống nhau, nên so sánh chúng sử dụng toán tử == thì kết quả trả về là True:

>>> a == b True

Tuy nhiên, điều đó không cho chúng ta biết rằng avà bđang thực sự trỏ đến cùng một đối tượng (dù sự thực chúng là một vì cách chúng ta định nghĩa biến b)

Để kiểm tra chúng có là một (tức cùng trỏ đến một địa chỉ ô nhớ), ta cần sử dụng toán tử is

>>> a is b True

Chúng ta hãy xem điều gì xảy ra khi chúng ta tạo một danh sách c giống hệt danh sách a:

>>> c = list(a)

hoặc sử dụng câu lệnh sau cũng được

>>> c = [ 1 , 2 , 3 ]

Một lần nữa bạn sẽ thấy rằng danh sách mới mà chúng ta vừa tạo trông giống hệt với đối tượng danh sách được tham chiếu tới bởi tên biến avà b:

>>> c [ 1 , 2 , 3 ]

Bây giờ đây là lúc chuyện thú vị xảy ra, hãy cùng so sánh cvới abằng cách sử dụng toán tử == và toán tử is

>>> a == c True >>> a is c False

Điều gì đã xảy ra? Thực sự là cvà a đang chỉ vào hai đối tượng khác nhau, mặc dù nội dung của chúng có thể giống nhau, còn a và b thì chỉ vào cùng một đối tượng. Để kiểm tra điều này, bạn có thể dùng hàm id(), lưu ý rằng địa chỉ ô nhớ này ở trên máy tính của bạn có thể khách với của tôi.

>>> id(a) 2337468908672 >>> id(b) 2337468908672 >>> id(c) 2337469229184

Bạn có thể xem thêm ví dụ về sự khác nhau giữa hai toán tử is và == tại đây https://www.geeksforgeeks.org/difference-operator-python/

2.5. Hàm bool()

Hàm bool() trả về kết quả False nếu đối số là số 0, None hoặc xâu rỗng, danh sách rỗng… Các trường hợp khác, kết quả trả về đều là True.

>>> bool(0) False >>> bool(None) False >>> bool('') False >>> bool([]) False >>> bool(()) False >>> bool(set()) False >>> bool({}) False >>> bool(1)  True  >>> bool('abc')  True  >>> bool([1, 2, 3])  True

Trong các phép toán đối với số nguyên, True tương đương với số 1, False tương đương với số 0.

>>> True + 1 2 >>> False + 1 1 >>> int(True) 1 >>> int(False) 0

Từ khóa » Toán Tử Logic Trong Python