Thứ năm, 17/11/2016 | 00:00 GMT+7

Hiểu Logic Boolean trong Python 3

Kiểu dữ liệu Boolean có thể là một trong hai giá trị, hoặc Đúng hoặc Sai . Ta sử dụng Boolean trong lập trình để so sánh và kiểm soát stream của chương trình.

Boolean đại diện cho các giá trị chân lý được liên kết với nhánh logic của toán học, cung cấp thông tin cho các thuật toán trong repository a học máy tính. Được đặt theo tên của nhà toán học George Boole, từ Boolean luôn bắt đầu bằng chữ B. Các giá trị TrueFalse cũng sẽ luôn có chữ T và F viết hoa tương ứng, vì chúng là các giá trị đặc biệt trong Python.

Trong hướng dẫn này, ta sẽ đi qua những điều cơ bản mà bạn cần hiểu cách hoạt động của Boolean, bao gồm so sánh Boolean và các toán tử logic và bảng sự thật.

Toán tử so sánh

Trong lập trình, các toán tử so sánh được sử dụng để so sánh các giá trị và đánh giá xuống một giá trị Boolean duy nhất của True hoặc False.

Bảng dưới đây cho thấy các toán tử so sánh Boolean.

Nhà điều hành Nó nghĩa là gì
== Tương đương với
! = Không bằng
< Ít hơn
> Lớn hơn
<= Ít hơn hoặc bằng
> = Lớn hơn hoặc bằng

Để hiểu cách hoạt động của các toán tử này, hãy gán hai số nguyên cho hai biến trong một chương trình Python:

x = 5 y = 8 

Ta biết rằng trong ví dụ này, vì x có giá trị là 5 nên nó nhỏ hơn y có giá trị là 8 .

Sử dụng hai biến đó và các giá trị liên quan của chúng, hãy xem qua các toán tử từ bảng trên. Trong chương trình của ta , ta sẽ yêu cầu Python in ra liệu mỗi toán tử so sánh có đánh giá là Đúng hay Sai hay không. Để giúp ta và những người khác hiểu rõ hơn về kết quả kết quả này, Python cũng sẽ in một chuỗi để cho ta thấy nó đang đánh giá những gì.

x = 5 y = 8  print("x == y:", x == y) print("x != y:", x != y) print("x < y:", x < y) print("x > y:", x > y) print("x <= y:", x <= y) print("x >= y:", x >= y) 
Output
x == y: False x != y: True x < y: True x > y: False x <= y: True x >= y: False 

Theo logic toán học, trong mỗi biểu thức ở trên, Python đã đánh giá:

  • 5 ( x ) có bằng 8 ( y ) không? Sai
  • 5 không bằng 8 sao? Thật
  • 5 có nhỏ hơn 8 không? Thật
  • 5 có lớn hơn 8 không? Sai
  • 5 nhỏ hơn hay bằng 8? Thật
  • 5 không nhỏ hơn hoặc bằng 8? Sai

Mặc dù ta đã sử dụng số nguyên ở đây, ta có thể thay thế chúng bằng các giá trị float.

Chuỗi cũng được dùng với toán tử Boolean. Chúng phân biệt chữ hoa chữ thường trừ khi bạn sử dụng một phương thức chuỗi bổ sung.

Ta có thể xem các chuỗi được so sánh như thế nào trong thực tế:

Sammy = "Sammy" sammy = "sammy"  print("Sammy == sammy: ", Sammy == sammy) 
Output
Sammy == sammy:  False 

Chuỗi "Sammy" ở trên không bằng chuỗi "sammy" , bởi vì chúng không hoàn toàn giống nhau; một cái bắt đầu bằng chữ S và cái kia bằng chữ s . Nhưng, nếu ta thêm một biến khác được gán giá trị là "Sammy" , thì chúng sẽ đánh giá bằng:

Sammy = "Sammy" sammy = "sammy" also_Sammy = "Sammy"  print("Sammy == sammy: ", Sammy == sammy) print("Sammy == also_Sammy", Sammy == also_Sammy) 
Output
Sammy == sammy:  False Sammy == also_Sammy:  True 

Bạn cũng có thể sử dụng các toán tử so sánh khác bao gồm >< để so sánh hai chuỗi. Python sẽ so sánh các chuỗi này một cách từ vựng bằng cách sử dụng các giá trị ASCII của các ký tự.

Ta cũng có thể đánh giá các giá trị Boolean bằng các toán tử so sánh:

t = True f = False  print("t != f: ", t != f) 
Output
t != f:  True 

Khối mã trên đã đánh giá rằng True không bằng False .

Lưu ý sự khác biệt giữa hai toán tử === .

x = y   # Sets x equal to y x == y  # Evaluates whether x is equal to y 

Đầu tiên, = là toán tử gán, sẽ đặt một giá trị bằng một giá trị khác. Thứ hai, == là một toán tử so sánh sẽ đánh giá xem hai giá trị có bằng nhau hay không.

Toán tử logic

Có ba toán tử logic được sử dụng để so sánh các giá trị. Họ đánh giá các biểu thức xuống giá trị Boolean, trả về True hoặc False . Các toán tử này là and , ornot và được định nghĩa trong bảng dưới đây.

Nhà điều hành Nó nghĩa là gì Nó trông như thế nào
Đúng nếu cả hai đều đúng x and y
hoặc là Đúng nếu ít nhất một đúng x or y
không phải Đúng chỉ nếu sai not x

Các toán tử logic thường được sử dụng để đánh giá xem hai hoặc nhiều biểu thức là đúng hay không đúng. Ví dụ, chúng được dùng để xác định xem điểm có đạt hay không và học sinh có đăng ký vào khóa học hay không, và nếu cả hai trường hợp đều đúng thì học sinh sẽ được chỉ định một điểm trong hệ thống. Một ví dụ khác là xác định liệu user có phải là khách hàng hoạt động hợp lệ của một cửa hàng trực tuyến hay không dựa trên việc họ có tín dụng tại cửa hàng hay đã mua hàng trong 6 tháng qua.

Để hiểu cách hoạt động của các toán tử logic, hãy đánh giá ba biểu thức:

print((9 > 7) and (2 < 4))  # Both original expressions are True print((8 == 8) or (6 != 6)) # One original expression is True print(not(3 <= 1))          # The original expression is False 
Output
True True True 

Trong trường hợp đầu tiên, print((9 > 7) and (2 < 4)) , cả 9 > 72 < 4 cần được đánh giá là True vì toán tử and đang được sử dụng.

Trong trường hợp thứ hai, print((8 == 8) or (6 != 6)) , vì 8 == 8 đánh giá là True, nên nó không tạo ra sự khác biệt khi 6 != 6 đánh giá là False vì toán tử or là đã sử dụng. Nếu ta đã sử dụng toán tử and , điều này sẽ đánh giá là Sai.

Trong trường hợp thứ ba, print(not(3 <= 1)) , toán tử not phủ định giá trị Sai mà 3 <=1 trả về.

Hãy thay thế float cho các số nguyên và nhắm đến các đánh giá Sai:

print((-0.2 > 1.4) and (0.8 < 3.1)) # One original expression is False print((7.5 == 8.9) or (9.2 != 9.2)) # Both original expressions are False        print(not(-5.7 <= 0.3))             # The original expression is True 

Trong ví dụ trên,

  • and phải có ít nhất một biểu thức Sai được đánh giá thành Sai,
  • or phải có cả hai biểu thức được đánh giá là Sai,
  • not phải có biểu thức bên trong của nó là True thì biểu thức mới được đánh giá là False.

Nếu kết quả ở trên có vẻ không rõ ràng đối với bạn, ta sẽ xem xét một số bảng sự thật bên dưới để giúp bạn tăng tốc.

Bạn cũng có thể viết các câu lệnh ghép bằng cách sử dụng and , ornot :

not((-0.2 > 1.4) and ((0.8 < 3.1) or (0.1 == 0.1))) 

Trước tiên, hãy xem biểu thức bên trong nhất: (0.8 < 3.1) or (0.1 == 0.1) . Biểu thức này đánh giá là True vì cả hai câu lệnh toán học đều là True.

Bây giờ, ta có thể lấy giá trị trả về True và kết hợp nó với biểu thức bên trong tiếp theo: (-0.2 > 1.4) and (True) . Ví dụ này trả về False vì câu lệnh toán học -0.2 > 1.4 là Sai, và (False) and (True) trả về Sai.

Cuối cùng, ta có biểu thức bên ngoài: not(False) , đánh giá là True, vì vậy giá trị trả về cuối cùng nếu ta in câu lệnh này ra là:

Output
True 

Các toán tử logic and , ornot đánh giá các biểu thức và trả về các giá trị Boolean.

Bảng Logic

Có rất nhiều điều để tìm hiểu về nhánh logic của toán học, nhưng ta có thể tìm hiểu một cách có chọn lọc một số trong đó để cải thiện tư duy thuật toán khi lập trình.

Dưới đây là các bảng chân trị cho toán tử so sánh == và từng toán tử logic and , ornot . Mặc dù bạn có thể giải thích chúng, nhưng việc ghi nhớ chúng cũng có thể hữu ích vì điều đó có thể giúp quá trình ra quyết định lập trình của bạn nhanh hơn.

== Bảng logic

x == y Kết quả
True == True True
True == False False
False == True False
False == False True

VÀ 

x AND y Kết quả
True and True Thật
True and False False
False and True Sai
False and False Sai

HOẶC 

x or y Kết quả
True or True True
True or False True
False or True True
False or False False

Phủ định 

Phủ định x Kết quả
Phủ định True False
Phủ định False True

Bảng chân trị là bảng toán học phổ biến được sử dụng trong logic và rất hữu ích để ghi nhớ hoặc ghi nhớ khi xây dựng các thuật toán (hướng dẫn) trong lập trình máy tính.

Sử dụng toán tử Boolean để kiểm soát stream

Để kiểm soát stream và kết quả của một chương trình dưới dạng các câu lệnh điều khiển stream , ta có thể sử dụng một điều kiện theo sau là một mệnh đề .

Một điều kiện đánh giá xuống giá trị Boolean là True hoặc False, thể hiện một điểm mà một quyết định được đưa ra trong chương trình. Đó là, một điều kiện sẽ cho ta biết nếu một cái gì đó được đánh giá là Đúng hay Sai.

Mệnh đề là khối mã tuân theo điều kiện và ra lệnh cho kết quả của chương trình. Đó là, nó là thực hiện phần này của cấu trúc "Nếu x là True, thì hãy làm điều này."

Khối mã dưới đây cho thấy một ví dụ về các toán tử so sánh hoạt động song song với các câu lệnhđiều kiện để kiểm soát stream của một chương trình Python:

if grade >= 65:                 # Condition     print("Passing grade")      # Clause  else:     print("Failing grade") 

Chương trình này sẽ đánh giá xem điểm của mỗi học sinh là đậu hay rớt. Trong trường hợp của một học sinh có điểm là 83, câu lệnh đầu tiên sẽ đánh giá là True , và câu lệnh in điểm Passing grade sẽ được kích hoạt. Trong trường hợp học sinh có điểm 59, câu lệnh đầu tiên sẽ đánh giá là False , do đó chương trình sẽ chuyển sang thực hiện câu lệnh in gắn với biểu thức else : Failing grade .

Vì mọi đối tượng đơn lẻ trong Python đều có thể được đánh giá là Đúng hoặc Sai, Hướng dẫn kiểu PEP 8 khuyên bạn không nên so sánh giá trị với True hoặc False vì nó khó đọc hơn và thường sẽ trả về Boolean không mong muốn. Đó là, bạn nên tránh sử dụng if sammy == True: trong các chương trình của bạn. Thay vào đó, hãy so sánh sammy với một giá trị không phải Boolean khác sẽ trả về Boolean.

Toán tử Boolean đưa ra các điều kiện được dùng để quyết định kết quả cuối cùng của một chương trình thông qua các câu lệnh điều khiển stream .

Kết luận

Hướng dẫn này đi qua các toán tử so sánh và logic thuộc kiểu Boolean, cũng như các bảng sự thật và sử dụng Boolean để điều khiển stream chương trình.

Bạn có thể tìm hiểu thêm về các kiểu dữ liệu khác trong hướng dẫn “ Hiểu về kiểu dữ liệu ” của ta và có thể đọc về câu lệnh điều kiện trong hướng dẫn “ Cách viết câu lệnh có điều kiện của ta .


Tags:

Các tin liên quan

Cách tạo chương trình máy tính bằng Python 3
2016-11-16
Cách tạo chương trình máy tính bằng Python 3
2016-11-16
Cách sử dụng các phương thức danh sách trong Python 3
2016-11-11
Các hàm Python 3 tích hợp để làm việc với các số
2016-11-08
Cách vẽ dữ liệu trong Python 3 bằng matplotlib
2016-11-07
Hiểu danh sách trong Python 3
2016-11-02
Cách làm Toán bằng Python 3 với Toán tử
2016-11-01
Giới thiệu về các hàm chuỗi trong Python 3
2016-11-01
Giới thiệu về các hàm chuỗi trong Python 3
2016-11-01
Giới thiệu về các hàm chuỗi trong Python 3
2016-11-01