Bài 2: Cấu trúc Rẽ nhánh (if/else)

1. Giới thiệu: Khi nào cần ?

  • Tình huống thực tế: Trong quản trị mạng, chúng ta cần chương trình tự động kiểm tra:

    • Nếu ping thành công thông báo “Server hoạt động”.

    • Ngược lại thông báo “Kiểm tra kết nối”.

  • Khái niệm: là công cụ giúp chương trình đưa ra quyết định và chọn một trong các lộ trình thực hiện dựa trên một điều kiện đúng hay sai.

2. Toán tử So sánh (So sánh logic)

Đây là công cụ để kiểm tra điều kiện. Kết quả của phép so sánh luôn là Đúng (True) hoặc Sai (False).

Toán tửÝ nghĩaVí dụKết qu
Bằng (Lưu ý 2 dấu bằng)10 == 10True
Khác5 != 10True
Lớn hơn20 > 15True
Nhỏ hơn5 < 5False
Lớn hơn hoặc bằng10 >= 10True
Nhỏ hơn hoặc bằng5 <= 8True
 
  • Cú pháp cơ bản:

    # Bắt buộc phải có dấu hai chấm (:)
    if dieu_kien_la_dung: 
        # Khối lệnh 1: Sẽ chạy khi điều kiện ĐÚNG
        print("Điều kiện này đúng!") 
    # Chương trình sẽ tiếp tục từ đây, bất kể điều kiện có đúng hay không
    
  • Khối lệnh () – Quy tắc Vàng:

    • Khối lệnh là các câu lệnh thuộc về .

    • Trong Python, khối lệnh được xác định bằng cách thụt lề (cách vào 4 dấu cách).

    • Lỗi thường gặp: Thiếu thụt lề hoặc thụt lề không đồng nhất .

4. Cấu trúc

Dùng khi chỉ có hai lựa chọn (Đúng hoặc Sai).

if diem >= 5:
    print("Đạt môn học.")
else:
    # else không cần điều kiện, nó là "ngược lại" của if
    print("Không đạt. Cần học lại.")

Demo: Viết chương trình kiểm tra xem người dùng nhập số lớn hơn 10 hay không.

5. Cấu trúc (Nhiều lựa chọn)

Dùng khi có nhiều hơn hai lựa chọn (chọn một trong nhiều nhánh).

  • (viết tắt của “else if”) cho phép kiểm tra điều kiện thứ hai, thứ ba, v.v.

  • Chương trình sẽ dừng ngay khi tìm thấy điều kiện ĐÚNG đầu tiên.

if diem >= 8:
    print("Loại Giỏi")
elif diem >= 6.5: # Chỉ kiểm tra nếu điểm < 8
    print("Loại Khá")
elif diem >= 5:   # Chỉ kiểm tra nếu điểm < 6.5
    print("Loại Trung bình")
else:
    print("Không đạt")

Demo: Viết chương trình phân loại độ tuổi: Nhỏ hơn 18 (Trẻ vị thành niên), 18-60 (Người lớn), Lớn hơn 60 (Người già).

6. Kết hợp Điều kiện ()

  • Toán tử : Cả hai điều kiện phải ĐÚNG.

    • Ví dụ: Truy cập được Tên đăng nhập Mật khẩu đều đúng.

  • Toán tử : Chỉ cần một trong hai điều kiện ĐÚNG.

    • Ví dụ: Được giảm giá là sinh viên mua hàng trên 5 triệu.

# Ví dụ AND
if gio_lam >= 8 and cham_cong == True:
    print("Đạt tiêu chuẩn lao động")

# Ví dụ OR
if he_thong == "Windows" or he_thong == "Linux":
    print("Hệ điều hành được hỗ trợ")

Demo: Viết chương trình kiểm tra số đã nhập là số chẵn lớn hơn 10.

7. Lồng ghép ()

  • Đặt một cấu trúc bên trong khối lệnh của một cấu trúc khác.

  • Dùng để kiểm tra điều kiện phụ thuộc.

  • Lưu ý: Việc thụt lề phải chính xác.

if ket_noi_ok == True:
    print("Bước 1: Kết nối thành công.")
    # Kiểm tra điều kiện phụ thuộc
    if quyen_admin == True:
        print("Được phép thay đổi cấu hình.")
    else:
        print("Chỉ được xem thông tin.")
else:
    print("Kiểm tra lại đường truyền.")

Demo: Viết chương trình nhập tên đúng tiếp tục hỏi mật khẩu. thông báo sai tên.

8. Câu lệnh match-case

Câu lệnh match-case là một tính năng mới được giới thiệu từ Python 3.10, giúp thay thế cho chuỗi if-elif-else dài dòng bằng cú pháp gọn gàng và dễ đọc hơn. Đây là cách Python hiện đại xử lý pattern matching – tức là so khớp giá trị theo mẫu.

🧩 Cú pháp match-case cơ bản

match biểu_thức:
    case giá_trị_1:
        # hành động nếu biểu_thức == giá_trị_1
    case giá_trị_2:
        # hành động nếu biểu_thức == giá_trị_2
    case _:
        # mặc định nếu không khớp giá trị nào

Dấu gạch dưới _wildcard – khớp với mọi giá trị, giống như else.

🎯 Ví dụ đơn giản

day = 3

match day:
    case 1:
        print("Thứ Hai")
    case 2:
        print("Thứ Ba")
    case 3:
        print("Thứ Tư")
    case _:
        print("Không xác định")
 

🧠 Khi nào nên dùng match-case?

  • Khi có nhiều giá trị cần kiểm tra (thay vì dùng nhiều if-elif)

  • Khi muốn code gọn gàng, dễ đọc, dễ bảo trì

  • Khi xử lý các kiểu dữ liệu phức tạp như tuple, list, dict (pattern matching nâng cao)

🔥 Ví dụ nâng cao: kiểm tra tuple

point = (0, 0)

match point:
    case (0, 0):
        print("Gốc tọa độ")
    case (x, 0):
        print(f"Nằm trên trục X tại x = {x}")
    case (0, y):
        print(f"Nằm trên trục Y tại y = {y}")
    case (x, y):
        print(f"Tọa độ thường: ({x}, {y})")

Bài Tập 2.1: Cấp độ: Dễ – cơ bản

Viết chương trình kiểm tra xem người dùng nhập số lớn hơn 10 hay không.

Hướng dẫn làm bài

Bước 1: Hiểu yêu cầu

Bạn cần viết chương trình:

  • Nhập một số từ bàn phím

  • Kiểm tra xem số đó có lớn hơn 10 hay không

  • In ra thông báo phù hợp

Bước 2: Viết chương trình từng bước

Bước 2.1: Nhập số từ bàn phím

so = int(input("Nhập một số nguyên bất kỳ: "))
  • input() dùng để nhận dữ liệu từ người dùng

  • int() chuyển dữ liệu từ chuỗi sang số nguyên

Bước 2.2: Kiểm tra điều kiện với if/else

if so > 10:
    print("Số bạn nhập LỚN hơn 10.")
else:
    print("Số bạn nhập KHÔNG lớn hơn 10.")
  • if so > 10: kiểm tra điều kiện

  • Nếu đúng → in thông báo lớn hơn

  • Nếu sai → in thông báo không lớn hơn

Bài Tập 2.2. Cấp độ: Dễ – cơ bản

Viết chương trình phân loại độ tuổi: Nhỏ hơn 18 (Trẻ vị thành niên), 18-60 (Người lớn), Lớn hơn 60 (Người già).

Hướng dẫn làm bài

Bước 1: Hiểu yêu cầu

Người dùng nhập vào độ tuổi (kiểu số nguyên). Chương trình sẽ phân loại như sau:

Điều kiệnPhân loại
< 18Trẻ vị thành niên
18–60Người lớn
> 60Người già
 
 

Bước 2: Viết chương trình từng bước

Bước 2.1: Nhập độ tuổi từ bàn phím

tuoi = int(input("Nhập độ tuổi của bạn: "))
  • input() dùng để nhận dữ liệu từ người dùng

  • int() chuyển dữ liệu từ chuỗi sang số nguyên

 

Bước 2.2: Kiểm tra điều kiện với if/elif/else

if tuoi < 18:
    print("Bạn là Trẻ vị thành niên.")
elif tuoi <= 60:
    print("Bạn là Người lớn.")
else:
    print("Bạn là Người già.")
  • if tuoi < 18: kiểm tra xem có nhỏ hơn 18 không

  • elif tuoi <= 60: kiểm tra từ 18 đến 60

  • else: xử lý trường hợp lớn hơn 60

Bài Tập 2.3. Cấp độ: Dễ – cơ bản

Viết chương trình kiểm tra số đã nhập là số chẵn và lớn hơn 10.

Hướng dẫn làm bài:

Bước 1: Hiểu yêu cầu

Bạn cần viết chương trình:

  • Nhập một số nguyên từ bàn phím

  • Kiểm tra xem số đó có chẵnlớn hơn 10 hay không

  • In ra thông báo phù hợp

Bước 2: Viết chương trình từng bước

Bước 2.1: Nhập số từ bàn phím

so = int(input("Nhập một số nguyên: "))
  • input() dùng để nhận dữ liệu từ người dùng

  • int() chuyển dữ liệu từ chuỗi sang số nguyên

Bước 2.2: Kiểm tra điều kiện với ifand

if so % 2 == 0 and so > 10:
    print("Số bạn nhập là số CHẴN và LỚN hơn 10.")
else:
    print("Số bạn nhập KHÔNG thỏa mãn cả hai điều kiện.")
  • so % 2 == 0 kiểm tra số chẵn

  • so > 10 kiểm tra số lớn hơn 10

  • and yêu cầu cả hai điều kiện đều đúng

Bài Tập 2.4. Cấp độ: Dễ – cơ bản

2.4.1. Viết chương trình kiểm tra số đã nhập là số lẻ nhưng lớn hơn 10.

2.4.2. Viết phần mềm giải phương trình bậc 2. Các số được nhập vào từ bàn phím.

Hướng dẫn làm bài:

Bước 1: Tìm hiểu dạng phương trình

Phương trình bậc 2 có dạng: ax2+bx+c=0

Trong đó:

  • a,b,c là các hệ số thực
  • a≠0

Bước 2: Nhập dữ liệu từ bàn phím

Dùng hàm input() để nhập các hệ số và ép kiểu về float CÁC BIẾN là a,b,c

Bước 3: Tính biệt thức Δ (Delta)

Δ=b2−4ac

Delta = b2 – 4ac

delta = b**2 – 4*a*c

Bước 4: Xử lý các trường hợp nghiệm

Dùng cấu trúc rẽ nhánh if/elif/else để phân loại nghiệm:

import math
nếu a = 0:
    In ra :"Đây không phải là phương trình bậc 2."
Ngược lại:
    Nếu delta > 0:
        x1 = (-b + math.sqrt(delta)) / (2*a)
        x2 = (-b - math.sqrt(delta)) / (2*a)
        In ra nghiệm x1 = {x1}, x2 = {x2}")
    ngược lại nếu delta = 0:
        x = -b / (2*a)
        In ra :"Phương trình có nghiệm kép: x = {x}"
    Ngược lại thì :
        In ra :"Phương trình vô nghiệm trong tập số thực."

Bước 5: Kiểm tra và chạy chương trình

Chạy chương trình trong môi trường như VS Code, PyCharm hoặc Terminal để kiểm tra kết quả.

Bài Tập 2.5: Kiểm tra Trạng thái Mạng Đơn giản (Cấp độ: Dễ – cơ bản)

Trong quản trị hệ thống, mã lỗi thường là “Thành công” và bất kỳ số khác là “Lỗi”.

  1. Sử dụng để hỏi người dùng nhập Mã trạng thái (dùng ).

  2. Sử dụng cấu trúc để kiểm tra:

    • mã trạng thái bằng 0 (). In: “KẾT NỐI THÀNH CÔNG.”

    • (Ngược lại). In: “KẾT NỐI THẤT BẠI. Kiểm tra cáp mạng.”

Hướng dẫn làm bài

Bước 1: Hiểu yêu cầu

  • Người dùng sẽ nhập một mã trạng thái (kiểu số nguyên).

  • Nếu mã là 0 → in ra: "KẾT NỐI THÀNH CÔNG."

  • Nếu mã khác 0 → in ra:

Bước 2: Viết chương trình từng bước

Bước 2.1: Nhập dữ liệu từ bàn phím

ma_trang_thai = int(input("Nhập mã trạng thái: "))
  • Dùng input() để nhận dữ liệu từ người dùng.

  • Dùng int() để chuyển dữ liệu từ chuỗi sang số nguyên.

Bước 2.2: Kiểm tra điều kiện với if/else

Nếu ma_trang_thai = 0 thì 
    In ra :"KẾT NỐI THÀNH CÔNG."
Ngược lại
    In ra thông báo ("KẾT NỐI THẤT BẠI. Kiểm tra cáp mạng.")
  • if ma_trang_thai == 0: kiểm tra xem mã có bằng 0 không.

  • Nếu đúng, in ra thông báo thành công.

  • Nếu sai, in ra thông báo lỗi.

Sản phẩm: Lưu với tên File baitap25_check_status.py

Bài Tập 2.6: Phân loại Hiệu suất Server (Cấp độ: Trung bình – )

Hiệu suất của máy chủ (Server) được đánh giá bằng phần trăm sử dụng CPU ().

  1. Sử dụng để hỏi người dùng nhập Phần trăm sử dụng CPU (dùng ).

  2. Sử dụng cấu trúc để phân loại:

    • sử dụng . In: “CẢNH BÁO NGUY HIỂM: Server quá tải!”

    • sử dụng . In: “Cảnh báo: Tải cao, cần theo dõi thêm.”

    • (Ngược lại). In: “Trạng thái BÌNH THƯỜNG.”

Hướng dẫn làm bài

Bước 1: Hiểu yêu cầu

  • Người dùng nhập phần trăm sử dụng CPU (kiểu số nguyên).

  • Nếu CPU ≥ 90 → In: "CẢNH BÁO NGUY HIỂM: Server quá tải!"

  • Nếu CPU ≥ 70 → In: "Cảnh báo: Tải cao, cần theo dõi thêm."

  • Ngược lại → In:

Bước 2: Viết chương trình từng bước

Bước 2.1: Nhập dữ liệu từ bàn phím

Tạo biến CPU_Usage dùng hàm input
  • Dùng input() để nhận dữ liệu từ người dùng.

  • Dùng int() để chuyển dữ liệu từ chuỗi sang số nguyên.

Bước 2.2: Kiểm tra điều kiện với if/elif/else

Nếu CPU_Usage >= 90 thì
    In ra thông báo :("CẢNH BÁO NGUY HIỂM: Server quá tải!")
Ngược lại nếu  CPU_Usage >= 70 thì
    In ra thông báo :"Cảnh báo: Tải cao, cần theo dõi thêm."
Còn ngược lại thì:
    In ra thông báo: "Trạng thái BÌNH THƯỜNG."
  • if kiểm tra điều kiện đầu tiên (≥90).

  • elif kiểm tra điều kiện tiếp theo (≥70).

  • else xử lý các trường hợp còn lại (<70).

Sản phẩm: Lưu với tên File baitap26_phanloai_cpu.py

Bài Tập 2.7: Kiểm tra Điều kiện Nâng cao (Cấp độ: Nâng cao – Toán tử )

Để thực hiện thay đổi cấu hình hệ thống, người dùng phải đáp ứng HAI điều kiện cùng lúc:

  1. Sử dụng để hỏi Tên người dùng (chuỗi). Tên đúng là admin.

  2. Sử dụng để hỏi Mã PIN (số nguyên). Mã PIN đúng là 1234.

  3. Sử dụng cấu trúc với toán tử để kiểm tra Tên người dùng Mã PIN đều đúng:

    • Tên là admin Mã PIN là 1234. In: “Truy cập CẤP QUYỀN CAO thành công.”

    • In: “Thông tin đăng nhập KHÔNG HỢP LỆ.”

Hướng dẫn làm bài

Bước 1: Hiểu yêu cầu 

  • Người dùng cần nhập Tên người dùng (kiểu chuỗi) và Mã PIN (kiểu số nguyên).

  • Nếu cả hai điều kiện đều đúng:

    • Tên là "admin"

    • Mã PIN là 1234 → In: "Truy cập CẤP QUYỀN CAO thành công."

  • Ngược lại → In: "Thông tin đăng nhập KHÔNG HỢP LỆ."

Bước 2: Viết chương trình từng bước

 Bước 2.1: Nhập dữ liệu từ bàn phím

Tạo biến ten_nguoi_dung dùng hàm input("Nhập tên người dùng: ")
tạo biến ma_pin bằng hàm input("Nhập mã PIN: ") kết hợp hàm int
  • input() dùng để nhập dữ liệu từ bàn phím.

  • int() chuyển mã PIN từ chuỗi sang số nguyên.

Bước 2.2: Kiểm tra điều kiện với ifand

Nếu mà ten_nguoi_dung = "admin" và ma_pin = 1234 thì:
    In ra thông báo :"Truy cập CẤP QUYỀN CAO thành công."
Còn ngược lại thì:
    In ra thông báo :"Thông tin đăng nhập KHÔNG HỢP LỆ."
  • and yêu cầu cả hai điều kiện phải đúng.

  • Nếu một trong hai sai → chuyển sang else.

Sản phẩm: Lưu với tên File baitap27_check_quyen.py

Bài Tập 2.8: Hệ thống Cấp Bậc Phân Quyền Lồng ghép (Cấp độ: Khó nhất – Lồng ghép )

Thiết kế một hệ thống kiểm tra quyền truy cập 2 cấp độ:

  1. Sử dụng để hỏi Vai trò (admin, user, hoặc guest).

  2. Sử dụng để hỏi Vùng truy cập (LAN hoặc WAN).

  3. Thực hiện kiểm tra bằng cấu trúc LỒNG GHÉP:

    • Vai trò là admin:

      • LỒNG GHÉP : In: “TRUY CẬP ĐẦY ĐỦ (Mọi vùng).”

    • Vai trò là user:

      • LỒNG GHÉP (với ): Vùng truy cập là LAN là ngày thường (có thể thêm biến is_weekend = False). In: “Truy cập HẠN CHẾ Vùng LAN.”

      • (của lồng ghép). In: “Không được phép truy cập vùng WAN.”

    • (Vai trò không hợp lệ). In: “Vai trò không xác định.”

Sản phẩm: Lưu với tên File baitap28_nested_permission.py

Bài Tập 2.9. Phân loại tam giác (Cấp độ: Khó nhất – Lồng ghép )

Viết chương trình nhận vào độ dài ba cạnh tam giác. Kiểm tra xem ba cạnh đó có tạo thành tam giác không. Nếu có, phân loại tam giác thành:

  • Tam giác đều

  • Tam giác cân

  • Tam giác vuông

  • Tam giác thường

Hướng dẫn làm bài

🧪 Bước 1: Hiểu yêu cầu

  • Nhập 3 số thực: a, b, c

  • Kiểm tra điều kiện tam giác: a + b > c and a + c > b and b + c > a

  • Nếu là tam giác:

    • Nếu a = b = c → Tam giác đều

    • Nếu có 2 cạnh bằng nhau → Tam giác cân

    • Nếu thỏa mãn định lý Pythagoras → Tam giác vuông

    • Ngược lại → Tam giác thường

  • Nếu không thỏa điều kiện → In: “Không phải tam giác!”

 

🧑‍💻 Bước 2: Viết chương trình từng bước

🔹 Bước 2.1: Nhập dữ liệu từ bàn phím

Tạo các biến a,b,c là các cạnh dùng hàm input("Nhập cạnh a: ") kết hợp hàm float. Dùng float() để xử lý số thập phân.

🔹 Bước 2.2: Kiểm tra điều kiện tam giác

Nếu mà a + b > c and a + c > b and b + c > a:
    thì in ra: Là tam giác
Còn ngược lại:
    In ra : ("Không phải tam giác!")

🔹 Bước 2.3: Phân loại tam giác

Nếu mà a = b = c thì in ra thông báo :"Tam giác đều"
Ngược lại nếu: a =b or b = c or a = c thì 
    # Kiểm tra thêm tam giác vuông cân
    sides = sorted([a, b, c])
    Nếu sides[0]**2 + sides[1]**2 == sides[2]**2: thì in ra thông báo
        :"Tam giác vuông cân"
    Ngược lại thì in ra Thông báo :"Tam giác cân"
Ngược lại nếu a**2 + b**2 == c**2 or a**2 + c**2 == b**2 or b**2 + c**2 == a**2 thì in ra thông báo:
    print("Tam giác vuông")
Ngược lại thì in ra thôgn báo:print("Tam giác thường")

💾 Sản phẩm

Lưu với tên file: bai29_phanloai_tamgiac.py

 

Bài Tập 2.10. Tìm số lớn nhất, nhỏ nhất (Cấp độ: Khó nhất – Lồng ghép )

Viết chương trình nhận vào 4. Kiểm tra xem số nào lớn nhất, số nào nhỏ nhất.

Các bước thực hiện

🔹 Bước 1: Nhập dữ liệu từ bàn phím

Tạo các biến a,b,c,d là các là các số kết hợp hàm float. Dùng float() để xử lý số thập phân.

Dùng float() để xử lý cả số thập phân.

🔹 Bước 2: Khởi tạo biến lớn nhất và nhỏ nhất

max_val = a
min_val = a

Giả sử ban đầu a là số lớn nhất và nhỏ nhất.

🔹 Bước 3: So sánh từng số để tìm số lớn nhất

Nếu b > max_val thì gán max_val = b
Nếu c > max_val thì gán max_val = c
Nếu d > max_valt thì gán max_val = d

🔹 Bước 4: So sánh từng số để tìm số nhỏ nhất

Nếu b < min_val thì gán min_val = b
Nếu c < min_val thì gán min_val = c
Nếu d < min_val thì gán min_val = d

🔹 Bước 5: In kết quả

In ra thông báo ("Số lớn nhất là:", max_val)
In ra thông báo ("Số nhỏ nhất là:", min_val)

💾 Sản phẩm
Lưu với tên file: bai210_tim_so_lon_nho_nhat.py

Bài Tập 2.11. Phân loại ngày trong tuần (Cấp độ: Dễ -match-case )

Yêu cầu: Viết chương trình nhập vào một số nguyên từ 1 đến 7, đại diện cho thứ trong tuần. Sử dụng match-case để in ra tên ngày tương ứng.

🛠️ Các bước thực hiện

🔹 Bước 1: Nhập số nguyên từ bàn phím

day = int(input("Nhập số thứ trong tuần (1-7): "))

🔹 Bước 2: Dùng match-case để kiểm tra

python
 
match day:
    case 1:
        print("Thứ Hai")
    case 2:
        print("Thứ Ba")
    case 3:
        print("Thứ Tư")
    case 4:
        print("Thứ Năm")
    case 5:
        print("Thứ Sáu")
    case 6:
        print("Thứ Bảy")
    case 7:
        print("Chủ Nhật")
    case _:
        print("Giá trị không hợp lệ")
Bài Tập 2.12. Máy tính đơn giản (Cấp độ: Trung bình match-case)
 
Hãy viết phần mềm Nhập hai số và một phép toán → Tính toán kết quả.

🛠️ Các bước thực hiện

🔹 Bước 1: Nhập hai số và phép toán

a = float(input("Nhập số thứ nhất: "))
b = float(input("Nhập số thứ hai: "))
operator = input("Nhập phép toán (+, -, *, /): ")

🔹 Bước 2: Dùng match-case để xử lý phép toán

match operator:
    case "+":
        print("Kết quả:", a + b)
    case "-":
        print("Kết quả:", a - b)
    case "*":
        print("Kết quả:", a * b)
    case "/":
        if b != 0:
            print("Kết quả:", a / b)
        else:
            print("Lỗi: Không thể chia cho 0")
    case _:
        print("Phép toán không hợp lệ")

Bài Tập 2.13. Phân tích tọa độ điểm (Cấp độ: Nâng cao)

Nhập tọa độ điểm (x, y) → Xác định vị trí điểm.

🛠️ Các bước thực hiện

🔹 Bước 1: Nhập tọa độ dưới dạng tuple

point = tuple(map(int, input("Nhập tọa độ (x y): ").split()))

🧩 Giải thích từng phần

Thành phầnÝ nghĩa
input("Nhập tọa độ (x y): ")Hiển thị lời nhắc và nhận chuỗi nhập từ người dùng, ví dụ "3 5"
.split()Tách chuỗi thành danh sách các phần tử dựa trên dấu cách → ["3", "5"]
map(int, ...)Dùng hàm int() để chuyển từng phần tử trong danh sách từ chuỗi sang số nguyên → [3, 5]
tuple(...)Đóng gói danh sách thành một tuple → (3, 5)
point = ...Gán tuple kết quả vào biến point

🔹 Bước 2: Dùng match-case để phân tích vị trí

match point:
    case (0, 0):
        print("Gốc tọa độ")
    case (x, 0):
        print(f"Nằm trên trục X tại x = {x}")
    case (0, y):
        print(f"Nằm trên trục Y tại y = {y}")
    case (x, y):
        print(f"Tọa độ thường: ({x}, {y})")

🧠 Giải thích chi tiết từng phần

1. match point:

  • Đây là cú pháp so khớp mẫu (pattern matching) được giới thiệu từ Python 3.10.

  • Biến point là một tuple chứa hai số nguyên đại diện cho tọa độ (x, y).

2. Các case bên trong

🔹 case (0, 0):

  • Kiểm tra xem point có đúng là (0, 0) không.

  • Nếu đúng → in ra: "Gốc tọa độ"

🔹 case (x, 0):

  • Kiểm tra xem điểm có nằm trên trục X không (tức là hoành độ x bất kỳ, tung độ y = 0).

  • Nếu đúng → gán giá trị hoành độ vào biến x và in ra: "Nằm trên trục X tại x = {x}"

🔹 case (0, y):

  • Kiểm tra xem điểm có nằm trên trục Y không (tức là hoành độ x = 0, tung độ y bất kỳ).

  • Nếu đúng → gán giá trị tung độ vào biến y và in ra: "Nằm trên trục Y tại y = {y}"

🔹 case (x, y):

  • Trường hợp còn lại: điểm không nằm trên trục X hay Y, cũng không phải gốc tọa độ.

  • Gán giá trị xy từ tuple và in ra: "Tọa độ thường: ({x}, {y})"