HomeLập trìnhPythonToán tử Python...

Toán tử Python – Toán tử logic trong Python


Các toán tử trong bất kỳ ngôn ngữ lập trình nào là các khối xây dựng cơ bản mà chúng ta có thể sử dụng để xây dựng các câu lệnh phức tạp, mạnh mẽ để giải quyết vấn đề.

Python cung cấp các loại toán tử khác nhau, như toán tử số học, toán tử logic, toán tử quan hệ, v.v. Trong bài đăng này, hãy đi sâu vào các toán tử logic trong Python và tìm hiểu cách chúng ta có thể sử dụng chúng.

Python cung cấp ba toán tử logic hoặc boolean, toán tử “and”, “or” và “not”. Chúng hoạt động trên một hoặc nhiều toán hạng và tùy thuộc vào giá trị của chúng, đánh giá là Đúng hoặc Sai. Sau đó, các quyết định được đưa ra dựa trên điều này.

Toán tử “và” trong Python

Toán tử “và” trong Python là một toán tử nhị phân, có nghĩa là nó yêu cầu hai toán hạng. Cú pháp chung trông như thế này:

operand1 and operand2

Đầu ra là True khi và chỉ khi cả hai toán hạng là True. Nếu bất kỳ toán hạng nào là Sai, thì đầu ra là Sai. Hãy xem một số ví dụ:

hình ảnh-70

Ở đây, chúng tôi sử dụng toán tử “và” để quyết định xem một người có thể được coi là người chơi trong Trò chơi mực hay không.

2 toán hạng cho “và” là các biến person_has_debtperson_willing_to_play. Vì các giá trị cho cả hai đều là True, nên đầu ra của biểu thức và là True và một đối tượng trình phát mới được tạo trong đó chúng tôi chỉ định tên trình phát và số trình phát.

Bây giờ, nếu giá trị cho person_willing_to_play là sai?

hình ảnh-69

Chúng ta biết rằng kết quả “and” chỉ là True nếu cả hai toán hạng đều là True. Nếu một trong hai là Sai, đầu ra là Sai và các câu lệnh trong mệnh đề khác sẽ được thực thi. Chúng ta có thể thêm bao nhiêu biểu thức tùy thích bằng cách sử dụng “và”, ví dụ:

if person_has_debt and person_willing_to_play and proper_age and total_player_capacity_not_full:
    player_obj = SquidGamePlayer("Sae-byok", 67)
    player_obj.show_details()
else:
    print("Player not added to game")

Giá trị thực của toán hạng được đánh giá từ trái sang phải và đầu ra là Sai nếu bất kỳ 1 toán hạng nào là Sai, nếu không thì đầu ra là Đúng.

Đọc thêm  Cách sử dụng cài đặt pip trong Python

Toán hạng có thể là biểu thức số học hoặc biểu thức quan hệ (hoặc bất kỳ sự kết hợp nào của cả hai), biểu thức logic lồng nhau, v.v.

hình ảnh-73

Toán tử “hoặc” trong Python

Toán tử “hoặc” cũng là toán tử nhị phân và cần 2 toán hạng. Đầu ra của biểu thức “or” là True nếu bất kỳ toán hạng nào của nó là True, nếu không thì đầu ra là Sai.

operand1 or operand2

Hãy xem xét một số ví dụ đơn giản:

hình ảnh-74

Ở đây toán hạng cho “hoặc” là đầu ra của phương thức has_high_traffic với đầu vào "some_road_name""another_road_name".

Để đơn giản, phương thức này trả về True hoặc False một cách ngẫu nhiên. Trong lần thực thi đầu tiên, Sai được trả về cho cả hai lệnh gọi phương thức và “hoặc” ước tính thành Sai vì cả hai toán hạng đều sai.

hình ảnh-76

Trong lần thực hiện thứ 2, số ngẫu nhiên bây giờ là 1 nên phương thức gọi has_high_traffic("some_road_name") trả về Đúng. Chúng tôi biết rằng nếu bất kỳ toán hạng nào của “hoặc” là True thì đầu ra cuối cùng cũng là True. Vì vậy, trong trường hợp này, biểu thức “or” là True và các câu lệnh trong mệnh đề if được thực thi.

Bạn có nhận thấy một điều ở đây? Chỉ cuộc gọi phương thức đầu tiên được thực hiện và has_high_traffic("another_road_name") đã không được gọi. Tại sao? Điều này là do một cái gì đó gọi là đoản mạch mà chúng ta sẽ tìm hiểu ngay sau đây.

Toán tử “không” trong Python

“not” là một toán tử đơn nguyên, có nghĩa là nó hoạt động với 1 toán hạng và trả về giá trị chân lý đảo ngược cho toán hạng đó.

not ( operand )

Nói một cách đơn giản, nếu đầu vào là True, thì đầu ra là Sai và nếu đầu vào là Sai, thì đầu ra là True.

Điều này đơn giản khi các toán hạng có kiểu trực tiếp bool. Tuy nhiên, đầu vào có thể là kiểu số, đối tượng, danh sách, v.v. Trong những trường hợp như vậy, đầu ra phụ thuộc vào cách Python tính toán giá trị thực cho thực thể đó.

Đọc thêm  Cách cạo các bài viết trên Wikipedia bằng Python
hình ảnh-78

Python tính toán giá trị thật như thế nào?

Tất cả các toán tử logic làm việc với giá trị thực của toán hạng của chúng – nhưng giá trị thực chính xác là gì?

Chúng ta biết rằng kiểu bool True đại diện cho Đúng và False đại diện cho Sai. Python coi số 0 là Sai và tất cả các số khác, bất kể chúng là số dương hay âm, đều được coi là Đúng.

Nhìn vào các ví dụ hiển thị dưới đây:

hinh-71
hình ảnh-72

Giá trị thực của các thực thể trong Python được tính toán dựa trên một số quy tắc tiêu chuẩn, như được định nghĩa trong phần “Kiểm tra giá trị thực” của tài liệu được liên kết tại đây.

Vì vậy, bây giờ chúng ta biết cách hoạt động của toán tử not trong các ví dụ sau:

hình ảnh-79

Một danh sách trống [] có độ dài bằng 0, vì vậy giá trị thật là Sai. Số 0 là Sai, trong cả hai trường hợp, giá trị đảo ngược là Đúng và 3 là Đúng nên not(3) tương đương với not(True) đó là Sai.

Đoản mạch các toán tử logic

Các toán tử logic “và” và “hoặc” trong Python bị đoản mạch, điều đó có nghĩa là chúng chỉ đánh giá mức tối thiểu cần thiết để có được kết quả chính xác. Ví dụ:

if expression1 and expression2 and expression3:
	#do something
else:
	#do something else	

Nếu expression1 là Sai, chúng tôi biết rằng đầu ra cuối cùng của and là sai. Sau đó, nó có ý nghĩa để đánh giá expression2expression3? Không, nó không có ý nghĩa gì và Python cũng không làm điều đó. Nó bắt đầu đánh giá từ trái sang phải, ngay khi một biểu thức là Sai, “và” đánh giá là Sai, bỏ qua việc thực thi các toán hạng còn lại.

Điều tương tự cũng xảy ra với toán tử “or”:

if expression1 or expression2 or expression3:
	#do something
else:
	#do something else	

Nếu expression1 là True thì ngay lập tức đầu ra của biểu thức “or” trở thành True, bỏ qua 2 toán hạng còn lại.

Điều này giúp tiết kiệm thời gian không cần thiết để đánh giá các biểu thức mà đầu ra của chúng sẽ không ảnh hưởng đến đầu ra cuối cùng của biểu thức.

Lưu ý cuối cùng về cách hoạt động của “and” và “or”

Ở phần đầu của bài đăng này, tôi đã đề cập rằng đầu ra của “và” là Đúng khi và chỉ khi tất cả các toán hạng của nó là Đúng – nếu không thì đầu ra là Sai, như sau:

Đọc thêm  Hướng dẫn về phương pháp chuỗi Python – Cách sử dụng find() và replace() trên Chuỗi Python
hinh-82

Bây giờ chúng ta hãy xem một chút về những gì xảy ra dưới mui xe. and thực tế không trả về giá trị Đúng hoặc Sai. Thay vào đó, nó trả về một trong các toán hạng của nó! Điều này được đề cập trong tài liệu ở đây, cụ thể là phần này, được trích dẫn từ tài liệu:

(Ngoại lệ quan trọng: phép toán Boolean orand luôn trả về một trong các toán hạng của chúng.)

operand1 and operand2

Vì thế nếu operand1 là sai, and lợi nhuận operand1nếu không thì nó trả về operand2. Nếu toán hạng có kiểu bool thì dễ hiểu. Điều gì sẽ xảy ra nếu chúng ta có các toán hạng như sau:

hinh-80

Điều gì đang xảy ra ở đây? operand1 là 12 là Đúng, operand2 là 56 cũng đúng, vì vậy and lợi nhuận operand2 đó là 56.

Được rồi nhưng nó hoạt động như thế nào trong các câu điều kiện như trong if-else? Hãy nhớ rằng 56 cũng có một giá trị thực phải không? Cho nên and đưa ra đầu ra là 56 và bây giờ giá trị thực của 56 được sử dụng trong if-else. 56 là True nên mệnh đề if được thực thi.

Tương tự, chúng ta có “or” cũng trả về một trong các toán hạng của nó:

operand1 or operand2

Nó trở lại operand2 nếu operand1 là Sai, nếu không nó sẽ trả về operand1như chúng ta có thể thấy rõ trong đoạn trích sau:

hinh-81

kết thúc

Trong bài đăng này, chúng tôi đã tìm hiểu về:

  1. Các toán tử logic khác nhau trong Python và cách sử dụng chúng với các ví dụ
  2. Cách Python tính toán giá trị thực của các thực thể
  3. ngắn mạch là gì
  4. Các toán tử “và” và “hoặc” hoạt động như thế nào dưới mui xe

Cảm ơn bạn rất nhiều vì đã đọc, tôi hy vọng bạn thích bài viết này và học được một số thông tin thú vị liên quan đến toán tử logic trong Python. Hãy cẩn thận và viết mã vui vẻ!



Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status