Bài 5.2. Python - Kiểm tra điều kiện

Tại trung tâm của mỗi câu lệnh if là một biểu thức có thể được đánh giá là True hoặc False và được gọi là kiểm tra điều kiện. Python sử dụng các giá trị True và False để quyết định xem mã trong câu lệnh if có nên được thực thi hay không. Nếu một kiểm tra điều kiện đánh giá là True, Python thực thi mã theo sau câu lệnh if. Nếu kiểm tra đánh giá là False, Python bỏ qua mã theo sau câu lệnh if.

Kiểm tra sự bằng nhau

Hầu hết các kiểm tra điều kiện so sánh giá trị hiện tại của một biến với một giá trị cụ thể. Kiểm tra điều kiện đơn giản nhất kiểm tra xem giá trị của một biến có bằng với giá trị quan tâm hay không:

car = 'bmw'
car == 'bmw'
# True

Dòng đầu tiên đặt giá trị của car là 'bmw' bằng cách sử dụng dấu bằng đơn, như bạn đã thấy nhiều lần. Dòng tiếp theo kiểm tra xem giá trị của car có phải là 'bmw' bằng cách sử dụng dấu bằng đôi (==). Toán tử bằng này trả về True nếu các giá trị ở bên trái và bên phải của toán tử khớp, và False nếu chúng không khớp. Các giá trị trong ví dụ này khớp, vì vậy Python trả về True.

Khi giá trị của car là bất kỳ giá trị nào khác ngoài 'bmw', kiểm tra này trả về False:

car = 'audi'
car == 'bmw'
# False

Dấu bằng đơn thực sự là một câu lệnh; bạn có thể đọc dòng mã đầu tiên ở đây là "Đặt giá trị của car bằng 'audi'." Mặt khác, dấu bằng đôi đặt câu hỏi: "Giá trị của car có bằng 'bmw' không?" Hầu hết các ngôn ngữ lập trình sử dụng dấu bằng theo cách này.

Bỏ qua chữ hoa khi kiểm tra sự bằng nhau

Kiểm tra sự bằng nhau là phân biệt chữ hoa chữ thường trong Python. Ví dụ, hai giá trị với cách viết hoa khác nhau không được coi là bằng nhau:

car = 'Audi'
car == 'audi'
# False

Nếu chữ hoa quan trọng, hành vi này là có lợi. Nhưng nếu chữ hoa không quan trọng và thay vào đó bạn chỉ muốn kiểm tra giá trị của một biến, bạn có thể chuyển đổi giá trị của biến thành chữ thường trước khi thực hiện so sánh:

car = 'Audi'
car.lower() == 'audi'
# True

Kiểm tra này sẽ trả về True bất kể giá trị 'Audi' được định dạng như thế nào vì kiểm tra bây giờ không phân biệt chữ hoa chữ thường. Phương thức lower() không thay đổi giá trị ban đầu được lưu trữ trong car, vì vậy bạn có thể thực hiện loại so sánh này mà không ảnh hưởng đến biến ban đầu:

car = 'Audi'
car.lower() == 'audi'
# True
car
# 'Audi'

Chúng ta đầu tiên gán chuỗi viết hoa 'Audi' cho biến car. Sau đó, chúng ta chuyển đổi giá trị của car thành chữ thường và so sánh giá trị chữ thường với chuỗi 'audi'. Hai chuỗi khớp, vì vậy Python trả về True. Chúng ta có thể thấy rằng giá trị được lưu trữ trong car không bị ảnh hưởng bởi phương thức lower().

Kiểm tra sự không bằng nhau

Khi bạn muốn xác định xem hai giá trị có không bằng nhau hay không, bạn có thể sử dụng toán tử không bằng (!=). Hãy sử dụng một câu lệnh if khác để kiểm tra cách sử dụng toán tử không bằng. Chúng ta sẽ lưu một lớp phủ pizza được yêu cầu trong một biến và sau đó in một thông báo nếu người đó không đặt lớp phủ cá cơm:

requested_topping = 'mushrooms'
if requested_topping != 'anchovies':
    print("Hold the anchovies!")

Mã này so sánh giá trị của requested_topping với giá trị 'anchovies'. Nếu hai giá trị này không khớp, Python trả về True và thực thi mã theo sau câu lệnh if. Nếu hai giá trị khớp, Python trả về False và không chạy mã theo sau câu lệnh if.

Vì giá trị của requested_topping không phải là 'anchovies', hàm print() được thực thi:

Hold the anchovies!

Hầu hết các biểu thức điều kiện bạn viết sẽ kiểm tra sự bằng nhau, nhưng đôi khi bạn sẽ thấy hiệu quả hơn khi kiểm tra sự không bằng nhau.

So sánh số

Kiểm tra các giá trị số khá đơn giản. Ví dụ, mã sau kiểm tra xem một người có 18 tuổi hay không:

age = 18
age == 18
# True

Bạn cũng có thể kiểm tra xem hai số có không bằng nhau hay không. Ví dụ, mã sau in ra một thông báo nếu câu trả lời được đưa ra không đúng:

answer = 17
if answer != 42:
    print("That is not the correct answer. Please try again!")

Kiểm tra điều kiện này thành công, vì giá trị của answer (17) không bằng 42. Vì kiểm tra thành công, khối mã thụt lề được thực thi:

That is not the correct answer. Please try again!

Bạn có thể bao gồm các so sánh toán học khác nhau trong các câu lệnh điều kiện của mình, chẳng hạn như nhỏ hơn, nhỏ hơn hoặc bằng, lớn hơn và lớn hơn hoặc bằng:

age = 19
age < 21
# True
age <= 21
# True
age > 21
# False
age >= 21
# False

Mỗi so sánh toán học có thể được sử dụng như một phần của câu lệnh if, giúp bạn phát hiện các điều kiện chính xác mà bạn quan tâm.

Kiểm tra nhiều điều kiện

Bạn có thể muốn kiểm tra nhiều điều kiện cùng một lúc. Ví dụ, đôi khi bạn có thể cần hai điều kiện đều đúng để thực hiện một hành động. Những lần khác, bạn có thể hài lòng với chỉ một điều kiện đúng. Các từ khóa andor có thể giúp bạn trong các tình huống này.

Sử dụng and để kiểm tra nhiều điều kiện

Để kiểm tra xem hai điều kiện có đều đúng cùng một lúc hay không, sử dụng từ khóa and để kết hợp hai kiểm tra điều kiện; nếu mỗi kiểm tra thành công, biểu thức tổng thể đánh giá là True. Nếu một trong hai kiểm tra thất bại hoặc cả hai kiểm tra thất bại, biểu thức đánh giá là False.

Ví dụ, bạn có thể kiểm tra xem hai người có đều trên 21 tuổi hay không bằng cách sử dụng kiểm tra sau:

age_0 = 22
age_1 = 18
age_0 >= 21 and age_1 >= 21
# False
age_1 = 22
age_0 >= 21 and age_1 >= 21
# True

Đầu tiên, chúng ta định nghĩa hai độ tuổi, age_0age_1. Sau đó, chúng ta kiểm tra xem cả hai độ tuổi có đều từ 21 trở lên hay không. Kiểm tra ở bên trái thành công, nhưng kiểm tra ở bên phải thất bại, vì vậy biểu thức điều kiện tổng thể đánh giá là False. Chúng ta sau đó thay đổi age_1 thành 22. Giá trị của age_1 bây giờ lớn hơn 21, vì vậy cả hai kiểm tra riêng lẻ đều thành công, khiến biểu thức điều kiện tổng thể đánh giá là True.

Để cải thiện khả năng đọc, bạn có thể sử dụng dấu ngoặc xung quanh các kiểm tra riêng lẻ, nhưng chúng không bắt buộc. Nếu bạn sử dụng dấu ngoặc, kiểm tra của bạn sẽ trông như thế này:

(age_0 >= 21) and (age_1 >= 21)
Sử dụng or để kiểm tra nhiều điều kiện

Từ khóa or cho phép bạn kiểm tra nhiều điều kiện, nhưng nó thành công khi một trong hai hoặc cả hai kiểm tra riêng lẻ thành công. Một biểu thức or chỉ thất bại khi cả hai kiểm tra riêng lẻ đều thất bại.

Hãy xem xét hai độ tuổi một lần nữa, nhưng lần này chúng ta sẽ chỉ cần một người trên 21 tuổi:

age_0 = 22
age_1 = 18
age_0 >= 21 or age_1 >= 21
# True
age_0 = 18
age_0 >= 21 or age_1 >= 21
# False

Chúng ta bắt đầu với hai biến độ tuổi một lần nữa. Vì kiểm tra cho age_0 thành công, biểu thức tổng thể đánh giá là True. Chúng ta sau đó giảm age_0 xuống 18. Trong kiểm tra cuối cùng, cả hai kiểm tra bây giờ đều thất bại và biểu thức tổng thể đánh giá là False.

Kiểm tra xem một giá trị có trong danh sách hay không

Đôi khi, điều quan trọng là kiểm tra xem một danh sách có chứa một giá trị cụ thể trước khi thực hiện một hành động hay không. Ví dụ, bạn có thể muốn kiểm tra xem một tên người dùng mới đã tồn tại trong danh sách các tên người dùng hiện tại trước khi hoàn tất đăng ký của ai đó trên một trang web. Trong một dự án bản đồ, bạn có thể muốn kiểm tra xem một vị trí đã được gửi có tồn tại trong danh sách các vị trí đã biết hay không.

Để tìm hiểu xem một giá trị cụ thể đã có trong danh sách hay chưa, sử dụng từ khóa in. Hãy xem xét một số mã bạn có thể viết cho một tiệm pizza. Chúng ta sẽ tạo một danh sách các lớp phủ mà khách hàng đã yêu cầu cho một chiếc pizza và sau đó kiểm tra xem các lớp phủ nhất định có trong danh sách hay không.

requested_toppings = ['mushrooms', 'onions', 'pineapple']
'mushrooms' in requested_toppings
# True
'pepperoni' in requested_toppings
# False

Từ khóa in yêu cầu Python kiểm tra sự tồn tại của 'mushrooms' và 'pepperoni' trong danh sách requested_toppings. Kỹ thuật này khá mạnh mẽ vì bạn có thể tạo một danh sách các giá trị cần thiết và sau đó dễ dàng kiểm tra xem giá trị bạn đang kiểm tra có khớp với một trong các giá trị trong danh sách hay không.

Kiểm tra xem một giá trị không có trong danh sách

Những lần khác, điều quan trọng là biết nếu một giá trị không xuất hiện trong danh sách. Bạn có thể sử dụng từ khóa not in trong tình huống này. Ví dụ, hãy xem xét một danh sách các người dùng bị cấm bình luận trong một diễn đàn. Bạn có thể kiểm tra xem một người dùng có bị cấm trước khi cho phép người đó gửi bình luận hay không:

banned_users = ['andrew', 'carolina', 'david']
user = 'marie'
if user not in banned_users:
    print(f"{user.title()}, you can post a response if you wish.")

Câu lệnh if ở đây đọc khá rõ ràng. Nếu giá trị của user không có trong danh sách banned_users, Python trả về True và thực thi dòng thụt lề.

Người dùng 'marie' không có trong danh sách banned_users, vì vậy cô ấy thấy một thông báo mời cô ấy đăng một phản hồi:

Marie, you can post a response if you wish.

Biểu thức Boolean

Khi bạn học thêm về lập trình, bạn sẽ nghe thuật ngữ biểu thức Boolean vào một lúc nào đó. Một biểu thức Boolean chỉ là một tên khác cho một kiểm tra điều kiện. Một giá trị Boolean là True hoặc False, giống như giá trị của một biểu thức điều kiện sau khi nó đã được đánh giá.

Các giá trị Boolean thường được sử dụng để theo dõi các điều kiện nhất định, chẳng hạn như liệu một trò chơi có đang chạy hay không hoặc liệu một người dùng có thể chỉnh sửa nội dung nhất định trên một trang web hay không:

game_active = True
can_edit = False

Các giá trị Boolean cung cấp một cách hiệu quả để theo dõi trạng thái của một chương trình hoặc một điều kiện cụ thể quan trọng trong chương trình của bạn.

Làm thêm nhiều bài tập miễn phí tại đây

Comments

There are no comments at the moment.