Đúng và sai. Tình yêu nằm ở đâu giữa sai và đúng?

written by HVN on 2016-10-02

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ó 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 andor 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)

Where is the love?