Đúng và sai. Tình yêu nằm ở đâu giữa sai và đúng?
Thế giới không chỉ có trắng và đen, thế giới còn có tím mộng mơ, hồng ngây thơ, đỏ mãnh liệt
và xanh hoà bình nữa.
Nhưng sự thật chỉ có đúng hoặc sai, và Python thì có True
hoặc False
.
Trong Python, True
(chú ý viết hoa chữ T
) biểu diễn cho sự "đúng", và
False
(viết hoa chữ F
) biểu diễn cho sự sai. Ví dụ so sánh số integer:
In [1]: 2 > 1
Out[1]: True
In [2]: 4 < 2
Out[2]: False
In [3]: type(True)
Out[3]: bool # kiểu của True là bool
In [4]: 6 == 9 # kiểm tra hai vế có bằng nhau không - dùng 2 dấu =
Out[4]: False
Boolean
bool
hay đầy đủ là boolean đọc là /ˈbuːlɪən/ - không phải là "bu lin" mà là "bu-li-ờn".
Kiểu boolean chỉ có 2 giá trị; True
(đúng) hoặc False
(sai), chú ý chữ T và chữ F viết hoa.
True
đọc là /truː/
False
đọc là /fɔːls/
Đúng tức là không sai, và sai nghĩa là không đúng:
>>> not True
False
>>> not False
True
Dùng toán tử not
để đảo ngược giá trị của biểu thức.
Dùng is
để kiểm tra xem CÁI NÀY có là CÁI KIA không
>>> True is not False # tương đương với True is True
True
>>> False is not True # tương đương với False is False
True
Và tất nhiên, một là một, còn hai là hai:
>>> 1 is 1 and 2 is 2
True
Dùng toán tử and
để kết hợp hai biểu thức logic.
Đúng và đúng là đúng, đúng và sai là sai, sai và sai là sai lè lè
>>> True and True
True
>>> True and False
False
>>> False and False
False
Dùng toán tử or
để hoặc này hoặc kia:
>>> True or False or False
True
>>> False or False
False
Chú ý phép toán and
và or
trong Python thuộc loại "short-circuit" (tiếng Việt là "ngắn mạch").
Phép and
dừng khi gặp giá trị False
đầu tiên.
Phép or
dừng khi gặp giá trị True
đầu tiên.
Vậy nên:
>>> 1/0 or True
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
>>> True or 1/0
True
biểu thức True or 1/0
không gặp exception khi lấy 1 chia cho 0, bởi code đã dừng lại khi thấy True
.
Nhưng thế giới vốn không chỉ có trắng và đen, nó còn hồng cam vàng tím xanh lá chuối nữa, nên khi đưa
về đúng và sai, những giá trị 0
, ''
, []
, ()
, None
sẽ được xem là sai, còn lại đều là đúng. (Tạm nhớ
vẹt 🐣 thế, đến khi các kiểu dữ liệu trông lạ lạ sẽ được giới thiệu ở các bài tiếp theo.)
>>> False or 5
5
>>> 0 or 5
5
>>> 2 or 1/0
2
Nói dài nói dai thế, tóm lại: đúng là không sai, mà sai thì làm lại.
>>> True is not False
True
Câu hỏi bài tập: vậy tình yêu ở đâu?
[Nâng cao, có thể bỏ qua trong lần đầu đọc.]
>>> import this
>>> love = this
>>> this is love
True
>>> love is True
False
>>> love is False
False
>>> love is not True or False
True
>>> love is love
True
>>> # https://www.quora.com/What-are-some-cool-easter-eggs-of-python/answer/Christoffer-Aasted?srid=3VBz
People killin', people dyin'
Children hurt and you hear them cryin'
Can you practice what you preach?
Or would you turn the other cheek?
Father, Father, Father help us
Send some guidance from above
'Cause people got me, got me questionin'
Where is the love (Love)