Trong bài viết này, chúng ta hãy tìm hiểu cách triển khai logic “nếu không” trong các chương trình Python của chúng ta với sự trợ giúp của một số ví dụ
Nếu bạn đang vội, đây là phiên bản ngắn của câu trả lời
Phiên bản ngắn của câu trả lời
Trong Python, tùy thuộc vào những gì chúng tôi đang cố gắng thực hiện, chúng tôi có thể triển khai logic “nếu không” theo 2 cách sau
Tình huống #1. Kiểm tra nếu một điều kiện đã thất bại
Nếu bạn đang ở trong tình huống muốn tiếp tục khi một điều kiện không thành công, thì bạn có thể triển khai logic “nếu không” bằng cú pháp bên dưới
if == False:
// do your cool stuff here
Hãy nhớ thực tế là tất cả các điều kiện sẽ đánh giá các giá trị Boolean là Đúng hoặc Sai. Chúng tôi chỉ sử dụng cú pháp tương tự trong cú pháp trên để xác minh xem điều kiện của chúng tôi có được đánh giá là Sai hay không để đảm bảo rằng điều kiện đó thực sự không thành công
Hãy cho chúng tôi xem một ví dụ sử dụng cú pháp trên
is_iron_man_in_justice_league = False
if is_iron_man_in_justice_league == False:
print['Iron man is not part of the justice league of america']
Đây chỉ là một ví dụ đơn giản, nhưng bạn hiểu
Tình huống #1. Kiểm tra xem 2 đối tượng có bằng nhau không
Nếu tình huống của bạn yêu cầu bạn phải so sánh 2 đối tượng và đảm bảo rằng chúng không bằng nhau trước khi tiếp tục, thì bạn có thể triển khai logic “nếu không” với sự trợ giúp của. = toán tử [viết tắt của “không bằng”]
Cú pháp dưới đây cho thấy việc sử dụng. = toán tử
if obj1 != obj2:
// do your cool stuff here
Hãy để chúng tôi xem cách sử dụng bằng một ví dụ
x = 5
y = 10
if x != y:
print['x is not equal to y']
else:
print['x is equal to y']
Đầu ra của đoạn mã trên rõ ràng sẽ là
x is not equal to y
Chúng ta hãy xem lấy một ví dụ khác để nhìn mọi thứ từ một góc độ hơi khác
list1 = [1, 2, 3, 4, 5]
list2 = ['apple','mango','orange','pineapple','kiwi']
if list1 != list2:
print['list1 is not equal to list2']
else:
print['Both lists are equal']
Đầu ra bây giờ sẽ giống như sau
list1 is not equal to list2
Như bạn có thể thấy, đầu ra đúng như mong đợi
Như bạn có thể thấy, giống nhau ‘. = toán tử ‘ dùng để so sánh 2 số nguyên và so sánh 2 danh sách
Trên thực tế, tất cả các đối tượng python tích hợp sẽ hỗ trợ so sánh bằng cách sử dụng lệnh ‘. = nhà điều hành‘ và thậm chí hầu hết các thư viện bên ngoài [nếu được xây dựng đúng cách] sẽ làm như vậy
Nó chắc chắn làm cho cuộc sống của chúng ta, những lập trình viên trở nên dễ dàng. Nhưng những người tò mò trong số các bạn sẽ có những câu hỏi sau xuất hiện trong đầu
- Làm thế nào để python đảm bảo rằng tất cả các đối tượng dựng sẵn đều tuân theo “. = nhà điều hành” như chúng ta trực giác mong đợi họ?
- Làm cách nào để chúng tôi đảm bảo rằng các lớp mà chúng tôi tự xác định tuân theo “. = toán tử“?
Phần còn lại của bài viết này là tất cả về việc trả lời 2 câu hỏi này
“nếu không” trong Python. Phiên bản nhiều thông tin hơn của câu trả lời
Nếu bạn thích video hơn là bài viết, thì đây là một video ngắn mà tôi đã tạo cho bạn về chủ đề này.
[Tôi là YouTuber mới nên hãy thông cảm cho tôi nếu chất lượng không như mong đợi của bạn. ]
Được rồi, chúng ta hãy quay lại bài viết
Biểu thức và toán tử. Một số thông tin cơ bản
Trước tiên, chúng ta hãy quay lại những điều cơ bản và xem cách hoạt động của câu lệnh “nếu” trong Python
Cú pháp chung của câu lệnh if được hiển thị bên dưới
if :
# Execute code here
else:
# Execute code here
Phần cần lưu ý ở đây là “biểu thức là True”
Một biểu thức là một điều kiện sẽ đánh giá là Đúng hoặc Sai
Chúng ta hãy xem một vài ví dụ về những "biểu thức" như vậy
________số 8Đây là biểu thức. x > 6 sẽ đánh giá là Sai và dòng x không lớn hơn 6 sẽ được in trên màn hình của chúng tôi.
Bảng sau đây cho thấy 6 toán tử so sánh được hỗ trợ với các đối tượng số nguyên.
Lớn hơn và nhỏ hơn trong chuỗi sử dụng thứ tự bảng chữ cái để xác định cái nào lớn hơn. Trong ví dụ này, apple đứng trước xoài trong từ điển, do đó nếu toàn bộ từ điển được coi là một danh sách các từ, thì chỉ số của apple sẽ nhỏ hơn chỉ số của xoài và do đó chúng ta có đầu ra ở trên
Do đó ta có câu trả lời cho
táo có ít hơn xoài không?
Nhưng trong danh sách, không phải tất cả 6 toán tử đều được triển khai như trong đoạn mã dưới đây
is_iron_man_in_justice_league = False
if is_iron_man_in_justice_league == False:
print['Iron man is not part of the justice league of america']
0Như bạn có thể thấy, kiểm tra đẳng thức hoạt động tốt, bây giờ chúng ta hãy xem liệu lớn hơn và nhỏ hơn có hoạt động không
is_iron_man_in_justice_league = False
if is_iron_man_in_justice_league == False:
print['Iron man is not part of the justice league of america']
1Như bạn có thể thấy, python ném lỗi ở đây
Điều này là do, theo trực giác sẽ hợp lý khi kiểm tra xem 2 danh sách có bằng nhau hay không, nhưng không hợp lý khi kiểm tra danh sách nào lớn hơn danh sách kia
Do đó, các kỹ sư đã thiết kế python đã không triển khai mã sẽ thực hiện phép so sánh > hoặc < đối với chúng tôi khi nói đến danh sách
Được rồi, bây giờ chúng ta đã đề cập đến nội dung cơ bản, chúng ta hãy quay lại chủ đề chính đó là hiểu chính xác cách thức các toán tử này được triển khai đằng sau bức màn
Python triển khai “nếu không” bằng cách sử dụng “. = toán tử“
Trong Python,. = toán tử được triển khai với sự trợ giúp của phương thức __ne__[]. Ở đây "ne" là viết tắt của "không bằng". Hầu như tất cả các lớp trong Python sẽ được tích hợp sẵn phương thức này
Bất cứ khi nào chúng tôi sử dụng '. =’, trình thông dịch python gọi hàm __ne__[] này để so sánh
Vì vậy, khi chúng ta viết
is_iron_man_in_justice_league = False
if is_iron_man_in_justice_league == False:
print['Iron man is not part of the justice league of america']
2Python sẽ diễn giải và chuyển đổi mã thành
is_iron_man_in_justice_league = False
if is_iron_man_in_justice_league == False:
print['Iron man is not part of the justice league of america']
3Sau đó, Python sẽ chạy phương thức __ne__[] và trả về cho chúng tôi Đúng hoặc Sai
Logic thực tế để so sánh 2 đối tượng được triển khai bên trong phương thức __ne__[] của một lớp nhất định. Việc triển khai này sẽ khác nhau tùy thuộc vào kiểu dữ liệu mà chúng tôi đang xử lý. Như chúng ta đã thấy trong phần trước, việc triển khai __ne__[] cho số nguyên sẽ không giống như triển khai __ne__[] cho chuỗi
Chúng ta hãy xem một ví dụ đơn giản về cách chúng ta có thể gọi trực tiếp hàm __ne__[] thay vì sử dụng hàm. = toán tử và nhận được kết quả tương tự
is_iron_man_in_justice_league = False
if is_iron_man_in_justice_league == False:
print['Iron man is not part of the justice league of america']
4Nếu bạn chạy đoạn mã trên, bạn sẽ nhận được kết quả như sau
is_iron_man_in_justice_league = False
if is_iron_man_in_justice_league == False:
print['Iron man is not part of the justice league of america']
5As you might have guessed, other operators like “>”, “is greater than__gt__[]=s greater than or equal to__ge__[] kẻ báo thù 1. __ne__[báo thù2]
Theo logic tương tự, chúng ta cũng có thể triển khai các phương thức khác như __eq__[], __gt__[], __lt__[], v.v.