Thursday, 6 October 2016

Đúng và sai - kiểu Boolean trong Python

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ệtxanh hoà bình nữa. Nhưng sự thật chỉ có đúng hoặc sai, và Python thì có True hoặc False.

Boolean

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?

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


by HVN at FAMILUG dot ORG theo hướng dẫn học python Tiếng Việt