--------------- <> -----------------
--- KHOA HỌC - CÔNG NGHỆ - GIÁO DỤC - VIỆC LÀM ---
--- Học để đi cùng bà con trên thế giới ---

Tìm kiếm trong Blog

Python (15) - Lệnh điều kiện (tiếp)

Bài trước: Python (14) - Lệnh điều kiện
-----

15. Lệnh điều kiện (tiếp)

Ở bài học trước, chúng ta đã làm quen với các lệnh if, else cơ bản để ra lệnh cho máy tính đưa ra quyết định. Trong phần này, chúng ta sẽ học các kỹ thuật nâng cao hơn để viết mã nguồn ngắn gọn, thông minh và xử lý các tình huống phức tạp hơn.

15.1 Viết tắt lệnh điều kiện

Nếu bạn chỉ có duy nhất một lệnh cần thực thi sau điều kiện if, bạn có thể viết tất cả trên cùng một dòng để mã nguồn trông gọn gàng hơn.

Ví dụ: 

Thay vì viết 2 dòng:

a = 200

b = 33

if a > b: 

print("a lớn hơn b")

Bạn có thể viết 1 dòng:

a = 200

b = 33

if a > b: print("a lớn hơn b")

15.2 Toán tử ba ngôi

Khi bạn có một điều kiện đơn giản và muốn chọn giữa hai kết quả (một cho if và một cho else), bạn có thể dùng kỹ thuật gọi là Toán tử ba ngôi (Ternary Operators) hoặc Biểu thức điều kiện (Conditional Expressions).

Cú pháp: [Hành động 1] if [Điều kiện] else [Hành động 2]

Ví dụ:

a = 2

b = 330

print("A") if a > b else print("B")

Giải thích: Nếu a > b thì in chữ "A", ngược lại (else) thì in chữ "B".

Bạn cũng có thể kết hợp nhiều điều kiện trên cùng một dòng:

a = 330

b = 330

print("A") if a > b else print("=") if a == b else print("B")

15.3 Các toán tử Logic

Để kết hợp nhiều điều kiện lại với nhau, chúng ta sử dụng các từ khóa logic:

- Từ khóa and (và): Trả về True nếu tất cả các điều kiện đều đúng.

Ví dụ:

a = 200; b = 33; c = 500

if a > b and c > a:

    print("Cả hai điều kiện đều đúng")

- Từ khóa or (hoặc): Trả về True nếu ít nhất một trong các điều kiện là đúng.

Ví dụ:

a = 200; b = 33; c = 500

if a > b or a > c:

    print("Có ít nhất một điều kiện đúng")

- Từ khóa not (phủ định): Đảo ngược kết quả của điều kiện (đúng thành sai, sai thành đúng).

Ví dụ:

if not a < b:

    print("a KHÔNG nhỏ hơn b")

15.4 Lệnh If lồng nhau

Trong thực tế, đôi khi một quyết định lại dẫn đến một quyết định khác. Bạn có thể đặt một lệnh if bên trong một lệnh if khác. Đây gọi là lồng nhau.

Lưu ý: Bạn phải chú ý việc thụt lề (indentation) để máy tính hiểu lệnh nào nằm trong khối lệnh nào.

Ví dụ:

x = 41

if x > 10:

    print("Lớn hơn 10,")

    if x > 20:

        print("và cũng lớn hơn 20!")

    else:

        print("nhưng không lớn hơn 20.")


15.5 Lệnh giữ chỗ

Trong Python, các khối lệnh sau if không được phép để trống. Tuy nhiên, nếu bạn đang viết dở chương trình và chưa biết sẽ làm gì tiếp theo, hãy dùng lệnh pass để tránh bị báo lỗi cú pháp (Syntax Error).

Ví dụ:

a = 33

b = 200

if b > a:

    pass # Máy tính sẽ bỏ qua và không báo lỗi

15.6 Lệnh so khớp

Trong một số trường hợp, thay vì viết quá nhiều if...elif...else, chúng ta có thể dùng lệnh match. Lệnh này giúp mã nguồn dễ đọc khi bạn cần so sánh một giá trị với nhiều trường hợp khác nhau.

Ví dụ: Khi bạn truy cập một trang web, máy tính server có thể gửi về cho bạn nhiều mã trạng thái (status). Bạn có thể lập trình để kiểm tra xem mã trạng thái đó mang ý nghĩa gì?

status = 404

match status:

    case 200:

        print("Thành công!")

    case 404:

        print("Không tìm thấy trang.")

    case 500:

        print("Lỗi máy chủ.")

    case _:

        print("Lỗi không xác định.")


Lưu ý: Dấu _ (gạch dưới) đóng vai trò như else, dùng cho tất cả các trường hợp còn lại.

15.7 Bài tập và câu hỏi

Bài tập 15a. Sử dụng lệnh điều kiện rút gọn (viết trên một dòng) để viết chương trình: Nhập vào một số nguyên, in ra "Số chẵn" nếu số đó chia hết cho 2, ngược lại in "Số lẻ".

Đầu vào:

Nhap so: 6

Kết quả mong đợi:

So chan

Bài tập 15b. Viết chương trình sử dụng lệnh If lồng nhau:

- Nhập vào một số x

- Kiểm tra nếu x là số dương (x > 0)

- Nếu đúng là số dương, kiểm tra tiếp xem x có lớn hơn 100 không để in ra thông báo tương ứng

Đầu vào:

Nhap so: 10

Kết quả mong đợi:

10 la so duong, khong lon hon 100

Bài tập 15c. Sử dụng lệnh Match Case để viết chương trình "Chào hỏi theo ngôn ngữ":

- Yêu cầu người dùng nhập vào một mã ngôn ngữ (ví dụ: "VN", "EN", "FR")

- Nếu là "VN" in "Xin chào"

- Nếu là "EN" in "Hello"

- Nếu là "FR" in "Bonjour"

- Các trường hợp khác in "Tôi không hiểu ngôn ngữ này"

Đầu vào:

Nhap ma ngon ngu: ABC

Kết quả mong đợi:

Toi khong hieu ngon ngu nay

15.d Lập trình máy tính cầm tay (calculator)

Yêu cầu: Hãy viết một chương trình mô phỏng hoạt động máy tính cầm tay đơn giản. Chương trình sẽ yêu cầu người dùng nhập vào hai số thực và một phép tính (+, -, *, /, ^). Sau đó, sử dụng các kiến thức về Lệnh điều kiện đã học để xuất ra kết quả chính xác.

Các yêu cầu cụ thể:

- Sử dụng lệnh input() để nhận dữ liệu từ bàn phím

- Sử dụng cấu trúc if...elif...else hoặc match...case để phân loại phép tính

- Xử lý lỗi chia cho 0: Nếu người dùng chọn phép chia / và số thứ hai bằng 0, hãy in ra cảnh báo "Lỗi: Không thể chia cho số 0!"

- Nếu người dùng nhập một phép tính không nằm trong danh sách (+, -, *, /, ^), hãy in ra "Phép tính không hợp lệ".

Câu 15.1: Trong Python, cách viết nào sau đây là đúng quy tắc viết tắt của lệnh if (shorthand If)?

A. if a > b then print("Hello") 

B. if a > b: print("Hello") 

C. if a > b print("Hello") 

D. if (a > b) {print("Hello")}

Câu 15.2: Cho đoạn mã sau:

a = 10

b = 20

c = 15

if a < b and c > a:

    print("True")

else:

    print("False")

Kết quả in ra màn hình là gì? 

A. False 

B. Lỗi cú pháp (Syntax Error) 

C. True 

D. Không in ra nội dung

-----
Bài sau: