Các toán tử Boolean
Cái gì phải là true về một phone number cái thuộc về một telemarketer? Số đầu tiên của nó phải
là 8 hay 9. Và, số thứ tư của nó phải là 8 hay 9. Và, số thứ hai và thứ ba phải tương tự nhau. Chúng
ta có thể mã hoá logic “or” và “and” này sử dụng các toán tử Boolean của Python.
Toán tử or
Toán tử or lấy hai biểu thức Boolean như các toán hạng của nó. Nó trả về True nếu ít nhất một toán
hạng là True, và ngược lại False:
>>> True or True
True
>>> True or False
True
>>> False or True
True
>>> False or False
False
Cách thức duy nhất để lấy False ra khỏi toán tử or là cả hai toán hạng của nó là False.
Chúng ta có thể sử dụng or để thông báo cho chúng ta liệu một số là 8 hay 9:
>>> digit = 8
>>> digit == 8 or digit == 9
True
>>> digit = 3
>>> digit == 8 or digit == 9
False
Nhớ rằng từ học phần “Integer and Floating-Point Numbers” rằng Python sử dụng ưu tiên toán
tử để quyết định trật tự cái các toán tử được áp dụng. Ưu tiên của or là thấp hơn ưu tiên
của các toán tử quan hệ, cái có nghĩa rằng chúng ta không thường cần dấu () quanh các toán
hạng. Ví dụ, trong digit == 8 or digit == 9, hai toán hạng đối với or là digit == 8 and digit == 9.
Nó là tương tự như thể chúng ta viết nó như (digit == 8)
or (digit == 9).
Trong tiếng Anh, nó có nghĩa nếu ai đó nói “if the digit is 8 or 9.”. Nhưng viết cái đó sẽ không
làm việc trong Python:
>>> digit = 3
>>> if digit == 8 or 9:
… print(‘yes!’)
…
yes!
Nhận thấy rằng tôi vừa viết không đúng toán hạng thứ hai như 9 thay vì digit == 9. Python trả lời
bằng cách cho ra yes!, cái chắc chắn không là cái chúng ta đã muốn cho rằng digit tham chiếu đến 3.
Lí do là rằng Python xem xét các số không phải là 0 là True. Vì 9 được xem là True, cái này làm cho toàn
bộ biểu thức là True. Cẩn thận double-check các biểu thức Boolean của bạn để tránh loại lỗi này
khi dịch từ ngôn ngữ tự nhiên sang Python.