Lập trình Python cơ bản
Tóm tắt biến, kiểu dữ liệu, phép toán, if, for, while, danh sách, xâu, hàm trong Python, đối chiếu với C++, cách lập vết chương trình và lỗi hay gặp.
Lập trình Python là kiến thức lớp 10 nhưng có mặt ở mọi đề: phần I thường có 3–4 câu "cho chương trình, hỏi kết quả in ra", đề in song song Python và C++. Ở định hướng CS, các câu đúng/sai về thuật toán cũng dựa trên kĩ năng này. Bí quyết là lập bảng vết: ghi giá trị các biến sau từng bước thay vì nhẩm.
Kiến thức trọng tâm
Kiểu dữ liệu và phép toán
| Kiểu | Ví dụ | Ghi chú |
|---|---|---|
int (số nguyên) |
17, -3 |
Không giới hạn độ lớn trong Python |
float (số thực) |
3.5, 7 / 2 |
Phép / luôn cho số thực |
str (xâu) |
"Tin", '12' |
"12" + "3" là "123" (ghép xâu) |
bool |
True, False |
Kết quả của phép so sánh |
list (danh sách) |
[5, 1, 8] |
Chỉ số bắt đầu từ 0 |
| Phép toán | Ý nghĩa | Ví dụ | Kết quả |
|---|---|---|---|
/ |
Chia | 7 / 2 |
3.5 |
// |
Chia lấy phần nguyên | 17 // 5 |
3 |
% |
Chia lấy dư | 17 % 5 |
2 |
** |
Lũy thừa | 2 ** 3 |
8 |
==, != |
Bằng, khác | 5 != 4 |
True |
and, or, not |
Và, hoặc, phủ định | not (3 > 2) |
False |
Thứ tự ưu tiên: ** → *, /, //, % → +, - → so sánh → not → and → or. Ví dụ 3 + 4 * 2 ** 2 bằng 19.
input() luôn trả về xâu; muốn tính toán phải đổi kiểu: n = int(input()). Lệnh print(a, b, sep="-", end="") in a, b
cách nhau bởi - và không xuống dòng.
Câu lệnh rẽ nhánh và lặp
| Cấu trúc | Python | C++ tương đương |
|---|---|---|
| Rẽ nhánh | if … : / elif … : / else: |
if (…) … else if (…) … else … |
| Lặp với số lần biết trước | for i in range(a, b, k): |
for (int i = a; i < b; i += k) |
| Lặp với điều kiện | while dk: |
while (dk) |
| Khối lệnh | Thụt lề đều nhau | Dấu { } |
| Chia nguyên, chia dư | //, % |
/ (giữa hai số nguyên), % |
| Logic | and, or, not |
&&, ||, ! |
| Độ dài | len(a) |
a.size() |
| Thêm cuối danh sách | a.append(x) |
a.push_back(x) (với vector) |
range(a, b, k) sinh các số từ a, mỗi lần cộng k, dừng trước b: range(10, 0, -3) → 10, 7, 4, 1 (4 lần lặp).
range(n) là 0, 1, …, n − 1.
Danh sách và xâu
| Thao tác | Danh sách a = [5, 1, 8, 3] |
Xâu s = "Ha Noi" |
|---|---|---|
| Phần tử | a[0] → 5, a[-1] → 3 |
s[0] → "H" |
| Độ dài | len(a) → 4 |
len(s) → 6 |
| Lát cắt | a[1:3] → [1, 8] |
s[3:] → "Noi" |
| Kiểm tra | 8 in a → True |
"No" in s → True |
| Thêm, chèn | a.append(x), a.insert(i, x) |
Xâu không sửa được từng kí tự, phải tạo xâu mới |
| Xóa | a.remove(x) (giá trị), a.pop(i) (vị trí) |
s.replace("a", "") |
| Khác | sorted(a), sum(a), max(a) |
s.upper(), s.find("N") → 3, s.split() → ["Ha", "Noi"] |
Hàm và phạm vi biến
def tang(x):
x = x + 5
return x * 2
x = 3
y = tang(x)
print(x, y)#include <iostream>
using namespace std;
int tang(int x) {
x = x + 5;
return x * 2;
}
int main() {
int x = 3;
int y = tang(x);
cout << x << " " << y;
return 0;
}Kết quả: 3 16. Tham số x trong hàm là biến cục bộ: gán x = x + 5 (thành 8) không làm thay đổi biến x của chương trình
chính, vẫn bằng 3. Hàm trả về . Biến tạo trong hàm không dùng được bên ngoài hàm.
Lập vết chương trình
a = [4, 7, 2, 9, 5, 8]
dem = 0
tong = 0
for x in a:
if x % 2 == 0:
dem = dem + 1
else:
tong = tong + x
print(dem, tong)#include <iostream>
using namespace std;
int main() {
int a[] = {4, 7, 2, 9, 5, 8};
int dem = 0, tong = 0;
for (int i = 0; i < 6; i++)
if (a[i] % 2 == 0)
dem = dem + 1;
else
tong = tong + a[i];
cout << dem << " " << tong;
return 0;
}| x | x chẵn? | dem | tong |
|---|---|---|---|
| 4 | có | 1 | 0 |
| 7 | không | 1 | 7 |
| 2 | có | 2 | 7 |
| 9 | không | 2 | 16 |
| 5 | không | 2 | 21 |
| 8 | có | 3 | 21 |
Chương trình in 3 21: đếm số chẵn và cộng các số lẻ.
Lỗi chương trình
| Loại lỗi | Khi nào phát hiện | Ví dụ |
|---|---|---|
| Lỗi cú pháp | Trước khi chạy | Thiếu : sau if, thụt lề sai, thiếu ngoặc |
| Lỗi khi chạy (ngoại lệ) | Đang chạy thì dừng | Chia cho 0, chỉ số vượt phạm vi danh sách, int("abc"), cộng xâu với số |
| Lỗi logic | Chạy hết nhưng sai kết quả | Dùng range(1, n) làm bỏ sót phần tử đầu |
Kiểm thử: chạy chương trình với nhiều bộ dữ liệu (kể cả trường hợp đặc biệt như danh sách rỗng, số âm, số 0) và so với kết quả đúng.
Dạng bài thường gặp trong đề thi
Dạng 1: Tính giá trị biểu thức, đếm số lần lặp
Xem lời giải
In 3 2 8 3.5. Vòng lặp nhận i = 10, 7, 4, 1 (số tiếp theo là −2 đã vượt qua mốc dừng 0) → 4 lần.
Dạng 2: Câu đúng/sai về một chương trình có hàm
Xem lời giải
- a) Đúng. Chia hết cho 3: 12, 18, 30, 9 → 4 số. Chia hết cho 5: 25, 30 → 2 số.
- b) Sai.
dlà biến cục bộ của hàm; dùng ngoài hàm sẽ báo lỗi (Python:NameError, C++: lỗi biên dịch). - c) Sai. Vòng lặp không chạy lần nào, hàm trả về 0, chương trình in
0 0. - d) Đúng.
k % x == 0nghĩa là x là ước của k. Mọi số trong danh sách đều lớn hơn 3 và 5 nên không số nào là ước của chúng → in0 0.
Dạng 3: Tìm lỗi logic
Xem lời giải
range(1, len(diem)) cho i = 1, 2 nên bỏ sót diem[0] = 8: tổng chỉ là , chia 3 được 5.0. Sửa thành
range(len(diem)) (hoặc for d in diem) thì tổng là 23, trung bình . Đây là lỗi logic: chương trình chạy
bình thường nhưng sai kết quả.
Lỗi thường gặp
Mẹo làm bài
Tự kiểm tra nhanh
- Chương trình sau in ra gì?
n = 1234
s = 0
while n > 0:
s = s + n % 10
n = n // 10
print(s)Xem đáp án
In 10. Mỗi lần lặp lấy chữ số hàng đơn vị (n % 10) cộng vào s rồi bỏ chữ số đó (n // 10): 4, 3, 2, 1 → .
- Chương trình sau in ra gì?
s = "tin hoc"
t = ""
for c in s:
if c != " ":
t = c + t
print(t, len(t))Xem đáp án
In cohnit 6. Mỗi kí tự khác dấu cách được ghép vào đầu xâu t nên t là xâu đảo ngược, bỏ dấu cách; độ dài 6.
a = [5, 1, 8, 3]. Saua.insert(2, 7)vàa.pop(0), danh sáchalà gì?
Xem đáp án
insert(2, 7) → [5, 1, 7, 8, 3]; pop(0) xóa phần tử ở vị trí 0 → [1, 7, 8, 3].
- Giá trị của
3 + 4 * 2 ** 2và(3 + 4) * 2là bao nhiêu?
Xem đáp án
2 ** 2 = 4, 4 * 4 = 16, 3 + 16 = 19. Biểu thức thứ hai: 7 * 2 = 14.
- Lệnh
int("abc")gây ra loại lỗi nào?
Xem đáp án
Lỗi khi chạy (ngoại lệ ValueError): xâu "abc" không đổi được sang số nguyên. Chương trình dừng tại lệnh đó.
Làm 10 câu luyện tập về lập trình python cơ bản và xem lời giải ngay sau mỗi câu.
Đề có câu hỏi về chủ đề này
Đề bám sát cấu trúc 2026: trí tuệ nhân tạo, thiết bị và giao thức mạng, HTML/CSS, đạo đức số, SQL và đọc chương trình Python/C++; phần đúng/sai gồm mạng gia đình, trang web lớp học, sắp xếp nổi bọt, học máy, phần mềm tạo trang web và CSDL thư viện.
Đề cơ bản củng cố kiến thức nền: khái niệm và ứng dụng AI, thiết bị và dịch vụ mạng, thẻ HTML và cách dùng CSS, an toàn tài khoản, hệ quản trị CSDL, rẽ nhánh và vòng lặp; phần đúng/sai gồm thư lừa đảo, AI trong trường học, tìm kiếm nhị phân, làm sạch dữ liệu, trang web làng nghề và CSDL câu lạc bộ thể thao.
Đề nâng cao, nhiều câu vận dụng: hệ chuyên gia, trình tự DNS – TCP – HTTP, quyền hình ảnh và giấy phép sử dụng, bộ chọn và tính kế thừa CSS, biểu mẫu, bảng gộp ô, phạm vi biến; phần đúng/sai gồm sự cố mã độc trong mạng trường, truy vấn nối ba bảng, kiểm thử sắp xếp chèn, phân loại k láng giềng gần nhất, trang web hội chợ khoa học và CSDL cửa hàng.