Skip to content

Cú pháp cơ bản: biến, nhập/xuất, điều kiện, vòng lặp, toán tử logic

This content is not available in your language yet.

Sau bài này, bạn sẽ:

  • Hiểu bản chất biến trong Python là một nhãn tham chiếu đến đối tượng trong bộ nhớ, phân biệt các kiểu dữ liệu nguyên thủy (int, float, bool, str).
  • Nắm vững toán tử số học, phân biệt so sánh giá trị (==) với so sánh định danh vùng nhớ (is).
  • Sử dụng thành thạo toán tử logic (and, or, not) và nắm bắt cơ chế đánh giá ngắn mạch (short-circuit evaluation).
  • Viết thành thạo cấu trúc rẽ nhánh (if – elif – else) và các vòng lặp (for, while), kết hợp range(), enumerate(), break, continue.
  • Áp dụng trực tiếp cú pháp điều khiển để xây dựng vòng lặp tối ưu hóa tham số mô hình AI.

This lesson needs nothing before it. You can start right away.

Hãy tưởng tượng bạn đang huấn luyện một mô hình trí tuệ nhân tạo để nhận biết khách hàng tiềm năng. Mô hình cần liên tục thực hiện hàng loạt quyết định logic:

  • “Nếu điểm tín dụng của khách hàng lớn hơn 700 và thu nhập trên 15 triệu, hãy xếp vào nhóm A.”
  • “Lặp lại quá trình điều chỉnh trọng số 100 lần, nhưng nếu độ dốc gradient giảm xuống gần bằng 0 thì dừng lại ngay để tiết kiệm thời gian.”

Mọi thuật toán AI dù phức tạp đến đâu — từ hồi quy tuyến tính đến các mô hình ngôn ngữ lớn (LLM) — đều được xây dựng từ những viên gạch cơ bản nhất của ngôn ngữ lập trình: lưu trữ dữ liệu vào biến, kiểm tra điều kiện, và lặp lại các phép tính.

Hiểu sâu sắc cú pháp và cơ chế thực thi bên dưới của Python sẽ giúp bạn tránh được những lỗi logic tai hại khi xử lý hàng triệu điểm dữ liệu huấn luyện.

Trong nhiều ngôn ngữ lập trình như C++ hay Java, một biến giống như một chiếc hộp chứa giá trị: gán giá trị nghĩa là đổ dữ liệu vào hộp. Nhưng trong Python:

Biến là một chiếc nhãn (name tag) dán vào một đối tượng cụ thể trong bộ nhớ RAM.

Khi bạn viết x = 10, Python tạo ra một đối tượng số nguyên có giá trị 10 trong vùng nhớ, sau đó gán nhãn x trỏ tới đối tượng đó.

  • Hàm type(x): Trả về kiểu dữ liệu của đối tượng mà biến đang trỏ tới.
  • Hàm id(x): Trả về mã số định danh duy nhất (tương ứng với địa chỉ ô nhớ) của đối tượng.
a = [1, 2, 3]
b = a # b dán nhãn vào cùng danh sách mà a đang trỏ tới!
b.append(4)
# Lúc này a cũng trở thành [1, 2, 3, 4]
  1. Số nguyên (int): Có độ chính xác tùy ý, không bị giới hạn tràn số như kiểu 32-bit hay 64-bit trong các ngôn ngữ khác.
  2. Số thực (float): Tuân theo chuẩn IEEE 754 (độ chính xác kép 64-bit). Cần đặc biệt chú ý sai số xấp xỉ nhị phân: không bao giờ dùng == để so sánh hai số thực trong các thuật toán máy học; hãy dùng khoảng sai số epsilon hoặc math.isclose(a, b).
  3. Giá trị logic (bool): Chỉ mang một trong hai giá trị True hoặc False.
  4. Chuỗi văn bản (str): Chuỗi ký tự Unicode bất biến (immutable). Dùng f-string (f"Giá trị: {val:.2f}") để định dạng văn bản trực quan.

Python hỗ trợ ba toán tử logic: and, or, và not.

Quy tắc chuyển đổi sang chân lý (Truthy và Falsy): Trong ngữ cảnh điều kiện, các giá trị sau đây được coi là False:

  • Số 0, 0.0
  • Đối tượng rỗng: "", [], (), {}, set()
  • Hằng số None và False

Mọi giá trị khác đều được coi là True.

Cơ chế Đánh giá Ngắn mạch (Short-circuit Evaluation):

  • Với A or B: Nếu A đúng, Python kết luận ngay kết quả là True mà không bao giờ tính biểu thức B.
  • Với A and B: Nếu A sai, Python kết luận ngay kết quả là False mà bỏ qua B.

Đặc tính này rất hữu ích khi bạn cần kiểm tra điều kiện an toàn trước khi truy xuất dữ liệu:

if data is not None and len(data) > 0:
process(data)

Cấu Trúc Điều Kiển: Điều Kiện và Vòng Lặp

Phần tiêu đề “Cấu Trúc Điều Kiển: Điều Kiện và Vòng Lặp”

Python dùng khoảng thụt lề (thường là 4 dấu cách) để xác định khối lệnh (block scope), thay vì dùng cặp dấu ngoặc nhọn {}:

  1. Rẽ nhánh if – elif – else: Kiểm tra tuần tự từ trên xuống dưới, chỉ thực thi khối lệnh đầu tiên có điều kiện thỏa mãn.
  2. Vòng lặp for: Lặp qua từng phần tử của một đối tượng có thể lặp (iterable) như dãy số, danh sách:
    • range(stop) hoặc range(start, stop, step): Sinh dãy chỉ số.
    • enumerate(iterable): Trả về cặp (chỉ_số, phần_tử), rất phổ biến khi cần đếm số bước huấn luyện (step/epoch).
    • zip(list1, list2): Ghép từng cặp phần tử tương ứng của hai danh sách cùng lúc.
  3. Vòng lặp while: Tiếp tục lặp chừng nào điều kiện còn đúng. Thường dùng khi thuật toán tối ưu chưa đạt ngưỡng hội tụ.
  4. break và continue:
    • break: Thoát khỏi vòng lặp ngay lập tức.
    • continue: Bỏ qua các câu lệnh còn lại của vòng lặp hiện tại để chuyển sang vòng lặp kế tiếp.

Bảng dưới đây tóm tắt các phép toán số học và toán tử logic cốt lõi trong Python:

Toán tửCú phápÝ nghĩa trong tính toán AIVí dụ
Chia thực/Chia trả về kết quả số thực float7 / 2 -> 3.5
Chia nguyên//Chia lấy phần sàn, thường dùng chia batch7 // 2 -> 3
Chia dư%Lấy phần dư, dùng để in log mỗi NN epochstep % 10 == 0
Lũy thừa**Tính mũ (bình phương sai số trong loss)error ** 2
So sánh giá trị==, !=Kiểm tra độ tương đương nội dungy_pred == y_true
So sánh vùng nhớis, is notKiểm tra đối tượng duy nhất (thường dùng cho None)model is None
Toán tử logicand, or, notKết hợp nhiều điều kiện lọc mẫu dữ liệuscore > 0.8 and not flagged

Quy trình vòng lặp tối ưu hóa hội tụ cơ bản trong máy học:

[ Khởi tạo trọng số w ]
│
▼
┌──► [ Tính gradient của hàm mất mát: grad = 2 * w ]
│ │
│ ▼
│ { Kiểm tra: abs(grad) < tolerance? }
│ ├─► ĐÚNG ──► [ Đã hội tụ! Thoát vòng lặp: break ] ──► (Kết thúc)
│ │
│ └─► SAI
│ │
│ ▼
│ [ Cập nhật trọng số: w = w - lr * grad ]
└─────────┘ (Lặp lại cho epoch tiếp theo)

Các ô dưới đây chạy độc lập. Bạn có thể nhấn nút Chạy để xem ngay kết quả mô phỏng.

Ô thứ nhất ứng dụng vòng lặp for, điều kiện dừng sớm break và phép tính số học để tìm cực tiểu của hàm số f(w)=w2f(w) = w^2 thông qua đạo hàm (gradient).

Vòng lặp tối ưu hóa gradient descent cơ bản

# Khởi tạo trọng số và siêu tham số
w = 5.0
lr = 0.1
tolerance = 1e-4
max_epochs = 50
# Vòng lặp tối ưu hóa mô phỏng
print(f"Initial weight: {w:.4f}")
for epoch in range(1, max_epochs + 1):
grad = 2.0 * w
w = w - lr * grad
if abs(grad) < tolerance:
print(f"Converged at epoch {epoch}")
break
print(f"Final weight: {w:.6f}")
print(f"Final gradient: {grad:.6f}")

The first run downloads Python, about 10 MB.

Ở đây, hàm số có cực tiểu tại w=0w = 0. Tại mỗi epoch, thuật toán cập nhật ww ngược chiều độ dốc. Khi gradient giảm xuống dưới ngưỡng sai số tolerance = 1e-4, lệnh break lập tức dừng vòng lặp, giúp tránh lãng phí tài nguyên tính toán.

Ô thứ hai minh họa kỹ thuật dùng toán tử logic (and, not) và hàm enumerate() để lọc các mẫu dữ liệu dự đoán hợp lệ từ một tập dữ liệu thô.

Lọc dữ liệu bằng toán tử so sánh và logic

# Dữ liệu điểm tin cậy và cờ cảnh báo: (độ tin cậy, gắn cờ lỗi)
samples = [
(0.95, False),
(0.42, False),
(0.88, True),
(0.76, False),
(0.31, True),
(0.91, False),
]
min_conf = 0.70
valid_samples = []
# Lọc các mẫu hợp lệ bằng toán tử so sánh và logic
for i, (score, is_flagged) in enumerate(samples):
# Chỉ giữ mẫu có độ tin cậy cao và không bị cảnh báo
if score >= min_conf and not is_flagged:
valid_samples.append((i, score))
pass_rate = len(valid_samples) / len(samples) * 100.0
print(f"Total samples: {len(samples)}")
print(f"Valid count: {len(valid_samples)}")
print(f"Pass rate: {pass_rate:.1f}%")
print(f"Accepted indices: {[idx for idx, _ in valid_samples]}")

The first run downloads Python, about 10 MB.

Kết quả tính toán đưa ra số lượng mẫu thỏa mãn điều kiện và tỷ lệ phần trăm mẫu đạt chuẩn. Đây chính là thao tác lọc mẫu (filtering) xuất hiện liên tục trong giai đoạn tiền xử lý dữ liệu trước khi đưa vào mô hình học máy.

Question 1 of 4 Cho hai danh sách x = [1, 2, 3] và y = [1, 2, 3]. Kết quả của hai biểu thức x == y và x is y lần lượt là gì?
Question 2 of 4 Biểu thức False and (10 / 0 > 1) có gây ra lỗi chia cho số không (ZeroDivisionError) hay không, và vì sao?
Question 3 of 4 Vì sao trong Python, biểu thức 0.1 + 0.2 == 0.3 lại cho kết quả là False?
Question 4 of 4 Dãy số nào được sinh ra bởi lời gọi list(range(2, 11, 3))?

Ý chính:

  • Biến trong Python là con trỏ tham chiếu đến đối tượng trong bộ nhớ, phân biệt rõ kiểm tra giá trị (==) và kiểm tra ô nhớ (is).
  • Số thực luôn đi kèm sai số nhị phân IEEE 754, cần dùng khoảng sai số khi so sánh độ hội tụ.
  • Cơ chế đánh giá ngắn mạch (short-circuit) của toán tử and và or giúp tăng tốc độ kiểm tra và ngăn chặn các lỗi truy xuất bộ nhớ nguy hiểm.
  • Cấu trúc if – elif – else kết hợp các vòng lặp for (cùng range, enumerate, zip) tạo nên bộ khung vận hành cho mọi vòng lặp tối ưu hóa thuật toán AI.

Đọc thêm:

Content licensed under CC BY-NC-SA 4.0. Code under the MIT license.About