
Chương trình Python mẫu cho người mới: 15 ví dụ nhỏ
AIDev TeamTham vấn chuyên môn: Nguyễn Việt Chung
Đăng 12 phút đọc
Mục lục · 17
Chương trình Python đầu tiên của người mới nên ngắn, chạy được ngay và làm một việc có ích. Bài này có 15 chương trình mẫu từ 4 đến 39 dòng, xếp từ dễ đến khó, kèm output thật trên Python 3.15.1, các lỗi gặp khi chạy và bộ file tải về một lần.
Một chương trình Python cho người mới chỉ cần vài dòng đến vài chục dòng: nhận dữ liệu, xử lý, in kết quả. Dưới đây là 15 chương trình như vậy, dài từ 4 đến 39 dòng. Mỗi chương trình làm một việc cụ thể như tính BMI, đọc số tiền thành chữ hay ghi chi tiêu ra file. Bạn tải cả bộ về, chạy từng file rồi đối chiếu với output trong bài.
Ngày 26/10/2026, mình chạy cả 15 chương trình trên Python 3.15.1, máy CPU thuê theo giờ của AIDev Cloud chạy Ubuntu 24.04. Chỗ nào chương trình hỏi, phần gõ vào cũng hiện trong ảnh, nên ảnh trong bài giống những gì bạn sẽ thấy khi tự chạy. Mấy điều nên biết trước:
Cả 15 file chỉ dùng standard library (các module, tức các phần thư viện có sẵn khi cài Python), không cần cài thêm gì.
Dòng đầu mỗi file là chú thích ghi chương trình làm gì và luyện kiến thức nào. Code trích trong bài bỏ phần chú thích đầu file cho gọn.
Chương trình xếp theo bốn nhóm: nhập và tính, vòng lặp và trò chơi, xử lý chuỗi và dict (kiểu dữ liệu lưu từng cặp khóa và giá trị), lưu dữ liệu ra file.
Bộ file tải tại aidev.edu.vn/s/chuong-trinh-python-mau, gồm 15 file
.pyvà một fileREADME.txt.
15 chương trình Python mẫu gồm những gì?
Số dòng trong bảng tính cả dòng chú thích và dòng trống.
# | File | Làm gì | Luyện kiến thức | Dòng |
|---|---|---|---|---|
1 |
| hỏi tên, năm sinh, tính tuổi |
| 7 |
2 |
| bảng đổi độ C sang độ F |
| 5 |
3 |
| tính BMI, xếp loại |
| 14 |
4 |
| số chẵn hay lẻ, âm hay dương |
| 8 |
5 |
| bảng cửu chương của một số |
| 4 |
6 |
| đoán số 1 đến 100 trong 7 lần |
| 12 |
7 |
| tiền gửi tiết kiệm sau 5 năm | biến tích lũy | 10 |
8 |
| 5 từ xuất hiện nhiều nhất |
| 10 |
9 |
| mật khẩu đủ mạnh chưa |
| 14 |
10 |
| đọc số tiền thành chữ | hàm, | 39 |
11 |
| oẳn tù tì với máy, 3 ván |
| 19 |
12 |
| danh sách việc cần làm |
| 16 |
13 |
| ghi chi tiêu, cộng theo danh mục |
| 22 |
14 |
| vẽ cây thông Noel bằng dấu sao | nhân chuỗi, | 6 |
15 |
| đồng hồ đếm ngược |
| 9 |
Nếu bạn mới học xong biến và print(), hãy làm theo thứ tự từ 1 đến 15. Nếu đã quen vòng lặp, có thể nhảy thẳng tới nhóm chuỗi và dict.
Tải và chạy bộ 15 chương trình ra sao?
Tải file zip từ aidev.edu.vn/s/chuong-trinh-python-mau rồi giải nén, bạn sẽ có thư mục chuong-trinh-python-mau. Mở terminal (cửa sổ gõ lệnh) trong thư mục này và gõ python kèm tên file. Trên Windows, nếu lệnh python không chạy thì dùng py (xem hướng dẫn dùng Python trên Windows của python.org). Trên macOS và Linux thì gõ python3.
python 01_xin_chao.py
Chương trình hỏi hai câu, bạn gõ câu trả lời rồi bấm Enter sau mỗi câu:

Tuổi được tính bằng năm hiện tại trừ năm sinh, lấy năm hiện tại từ đồng hồ của máy qua module datetime. Chương trình chưa xét ngày sinh trong năm, đó là chỗ bạn có thể sửa để luyện tay.
Nếu chưa có Python hoặc chưa chọn được chỗ viết code, bài phần mềm lập trình Python so VS Code, PyCharm và Thonny cho người mới.
Chương trình Python cơ bản: nhập, tính và in kết quả
Phần lớn các chương trình đầu bộ luyện cùng một khuôn: hỏi người dùng, đổi chữ gõ vào sang số, tính, rồi in ra. Chương trình tính BMI (chỉ số khối cơ thể) là ví dụ đầy đủ nhất:
can_nang = float(input("Cân nặng (kg): "))
chieu_cao = float(input("Chiều cao (m, ví dụ 1.65): "))
bmi = can_nang / chieu_cao ** 2
if bmi < 18.5:
loai = "thiếu cân"
elif bmi < 25:
loai = "bình thường"
elif bmi < 30:
loai = "thừa cân"
else:
loai = "béo phì"
print(f"BMI = {bmi:.1f}, {loai}")
BMI bằng cân nặng chia bình phương chiều cao. Các ngưỡng 18,5, 25 và 30 lấy theo định nghĩa của WHO cho người trưởng thành. Với 58 kg và 1,65 m, chương trình ra 21,3:

Thứ tự các nhánh elif quan trọng. Python xét từ trên xuống và dừng ở điều kiện đúng đầu tiên, nên nhánh bmi < 25 không cần viết thêm bmi >= 18.5. Chương trình 4 kiểm tra chẵn lẻ bằng phép chia lấy dư %, còn chương trình 9 kiểm tra mật khẩu bằng một list (danh sách) gom các điều kiện còn thiếu:

Hàm any() trả về True nếu có ít nhất một phần tử đúng. Viết any(c.isdigit() for c in mat_khau) nghĩa là "trong mật khẩu có ít nhất một chữ số".
Chương trình dùng vòng lặp: đoán số, tiết kiệm, đếm ngược
Trò đoán số chọn ngẫu nhiên một số từ 1 đến 100 và cho bạn 7 lần đoán. Mỗi lần đoán sai, chương trình nhắc lớn hơn hay nhỏ hơn:
import random
bi_mat = random.randint(1, 100)
for lan in range(1, 8):
doan = int(input(f"Lần {lan}, bạn đoán: "))
if doan == bi_mat:
print(f"Đúng rồi! Số bí mật là {bi_mat}.")
break
print("Lớn hơn nữa" if doan < bi_mat else "Nhỏ hơn nữa")
else:
print(f"Hết lượt. Số bí mật là {bi_mat}.")
Code dùng for với range(1, 8) vì số lượt đã biết trước. Nhánh else của vòng for chỉ chạy khi bạn đoán hết 7 lần mà không trúng, tức vòng lặp không gặp break.
Trong ván mình chơi, mình đoán theo cách chia đôi khoảng: đoán 50, rồi 25, rồi 37. Cách này luôn tìm ra số trong tối đa 7 lần, vì 2 mũ 7 bằng 128, lớn hơn 100. Lần này trúng ở lần thứ 7:

Chương trình 7 tính tiền gửi tiết kiệm 100 triệu đồng, lãi nhập gốc mỗi năm. Lãi suất 5% một năm trong code là số mình chọn để minh họa, bạn thay bằng lãi suất thật của sổ tiết kiệm. Sau 5 năm, tiền lãi là 27.628.156 đồng, nhiều hơn 25 triệu của cách tính lãi đơn vì lãi năm trước cũng sinh lãi:

Chương trình 14 vẽ cây thông Noel bằng dấu sao, chỉ có 5 dòng code:
cao = 6
for i in range(cao):
print(("*" * (2 * i + 1)).center(2 * cao + 1))
print("|||".center(2 * cao + 1))
print("Giáng sinh vui vẻ!".center(2 * cao + 1))
Dòng thứ i có 2 * i + 1 dấu sao, tức 1, 3, 5 và cứ thế tăng dần, còn center() thêm dấu cách hai bên cho dòng đứng giữa. Câu chúc dài 18 ký tự, hơn bề rộng 13 ký tự, nên center() để nguyên và câu chúc lệch so với thân cây. Chương trình 15 đếm ngược bằng time.sleep(1) và in đè lên cùng một dòng nhờ ký tự \r. Mình chạy với 3 giây, lệnh time đo được 3,023 giây từ lúc chạy tới lúc in "Hết giờ!".
Vòng lặp xuất hiện ở gần như mọi chương trình trong bộ này. Nếu chưa chắc về range(), break hay nhánh else, bài vòng lặp for trong Python có ví dụ và lỗi thật cho từng phần.
Chương trình xử lý chuỗi: đếm từ, đọc số thành chữ
Chương trình 10 dài nhất bộ, 39 dòng, và cũng hay nhất để luyện chia bài toán thành hàm. Nó đọc một số tiền dưới 1 tỷ thành chữ tiếng Việt, theo đúng mấy quy tắc người Việt hay đọc: "linh" khi hàng chục bằng 0, "mốt" thay "một" sau hàng chục từ 20 trở lên, "lăm" thay "năm" sau hàng chục. Nhóm ba chữ số đứng sau một nhóm lớn hơn thì đọc cả "không trăm", như nhóm nghìn đứng sau hàng triệu.

Hàm doc_ba_so() chỉ đọc một nhóm ba chữ số. Hàm doc_so() tách số tiền thành nhóm triệu, nhóm nghìn và nhóm đơn vị bằng // (chia lấy phần nguyên) và % (chia lấy dư), đọc từng nhóm rồi ghép lại. Mình cố ý chưa xử lý "tư" (như "hai mươi tư") và số từ 1 tỷ trở lên. Hai chỗ này là bài tập tốt để bạn tự thêm.
Chương trình 8 đếm từ trong một đoạn văn bằng dict: mỗi từ là một khóa, giá trị là số lần gặp. Dòng dem[tu] = dem.get(tu, 0) + 1 là cách đếm rất hay gặp trong Python, vì get() trả về 0 khi từ chưa có trong dict thay vì báo lỗi.
Chương trình lưu dữ liệu ra file: việc cần làm, chi tiêu
Chương trình 12 và 13 nhớ được dữ liệu giữa các lần chạy, vì chúng ghi ra file. Chương trình 12 lưu danh sách việc cần làm vào file JSON (định dạng văn bản lưu list và dict, đọc được bằng mắt). Bạn ra lệnh bằng tham số ngay trên dòng lệnh, chương trình đọc các tham số này qua sys.argv:
import json, sys
from pathlib import Path
FILE = Path("viec.json")
viec = json.loads(FILE.read_text(encoding="utf-8")) if FILE.exists() else []
if len(sys.argv) >= 3 and sys.argv[1] == "them":
viec.append({"ten": sys.argv[2], "xong": False})
elif len(sys.argv) >= 3 and sys.argv[1] == "xong":
viec[int(sys.argv[2]) - 1]["xong"] = True
FILE.write_text(json.dumps(viec, ensure_ascii=False, indent=2), encoding="utf-8")
for i, v in enumerate(viec, start=1):
print(f"{i}. [{'x' if v['xong'] else ' '}] {v['ten']}")

Tham số ensure_ascii=False giữ nguyên chữ có dấu trong file. Bỏ tham số này đi thì file vẫn đúng, nhưng "Nộp" bị ghi thành dạng mã như \u1ed9, mở ra rất khó đọc. Các tham số khác của module json có trong tài liệu chính thức.
Chương trình 13 ghi mỗi khoản chi thành một dòng trong file CSV (file bảng dạng chữ, các cột cách nhau bằng dấu phẩy), rồi cộng theo danh mục. Mình ghi ba khoản: ăn uống 45.000, đi lại 30.000, ăn uống 65.000. Mỗi lần chạy, chương trình đọc lại cả file và cộng từ đầu:

File CSV mở được bằng Excel (nếu chữ có dấu bị lỗi, mở qua Data > From Text/CSV và chọn mã UTF-8), nên trong cả bộ, đây là chương trình dễ đem ra dùng thật nhất. Chương 6 của ebook Python từ số 0 làm một app quản lý chi tiêu đầy đủ theo hướng này: có menu, nhập liệu không làm chương trình dừng giữa chừng, lưu CSV và thống kê theo tháng.
Mình gặp những lỗi nào khi chạy các chương trình này?
Quên đổi chữ sang số
input() luôn trả về chuỗi, kể cả khi bạn gõ số. Mình viết lại chương trình BMI mà bỏ float() để xem Python báo gì, rồi chạy bản đúng nhưng gõ chiều cao là 1m65:
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
ValueError: could not convert string to float: '1m65'

Lỗi đầu cho biết Python không bình phương được một chuỗi. Lỗi thứ hai xảy ra vì float() chỉ đọc được chữ có dạng số, dùng dấu chấm thập phân. Người Việt quen gõ 1,65 cũng sẽ gặp đúng lỗi ValueError này.
Đánh dấu một việc không có trong danh sách
Danh sách việc cần làm có hai việc, mình gõ xong 5:

IndexError: list index out of range
Chương trình mẫu cố ý không kiểm tra số thứ tự để code ngắn, nên Python dừng và in cả một traceback (đoạn báo lỗi chỉ ra dòng code gây lỗi). Bản dùng thật nên kiểm tra trước và báo "không có việc số 5".
Ba lỗi vừa kể đều xảy ra lúc chạy: code đúng cú pháp, chương trình chỉ dừng khi gặp dữ liệu không như mong đợi. Bảng dưới gom cách sửa:
Lỗi | Gặp khi | Cách sửa |
|---|---|---|
| tính toán trên kết quả | bọc |
| gõ | dùng |
| số thứ tự lớn hơn số việc trong danh sách | kiểm tra |
Khi nào 15 chương trình mẫu này chưa đủ?
Bộ này giúp bạn thấy một chương trình hoàn chỉnh trông thế nào, nhưng không chấm bài cho bạn. Bạn chạy, nhìn output và tự đoán xem đúng hay sai. Khi muốn tự viết code rồi biết ngay đúng sai, bộ bài tập Python có máy tự chấm hợp hơn: 12 bài, 55 test, chạy một lệnh là có kết quả.
Các chương trình cũng chỉ chạy trong terminal. Muốn có giao diện cửa sổ hay trang web, bạn cần thêm thư viện như Tkinter (cửa sổ) hay Flask (web), nên mình không đưa vào bộ cho người mới này. Với dự án nhiều file và phải cài thêm package (gói thư viện của người khác viết), bạn nên tạo môi trường riêng cho từng dự án, bài môi trường ảo Python (venv) hướng dẫn từng bước.
Câu hỏi thường gặp
Chương trình Python đơn giản nhất là gì?
Một dòng print("Xin chào") lưu vào file .py đã là một chương trình Python chạy được. Chương trình 5 trong bộ này chỉ có 4 dòng mà đã có nhập, vòng lặp và in kết quả. Độ dài không quan trọng bằng việc chương trình làm đúng một việc rõ ràng.
Nên chép code mẫu hay tự gõ lại?
Nên tự gõ lại ít nhất một lần, kể cả khi đã có file. Lúc gõ, bạn sẽ gõ sai dấu hai chấm, thụt lề hay tên biến, và tự sửa các lỗi đó là phần học được nhiều nhất. Sau đó thử đổi một chỗ, ví dụ cho trò đoán số 5 lượt thay vì 7, rồi chạy lại.
Chương trình Python có chạy trên Windows được không?
Được. Cả 15 file chỉ dùng standard library và không gọi lệnh riêng của hệ điều hành nào. Mình chạy chúng trên Ubuntu, chưa chạy lại trên Windows cho bài này, nên nếu bạn gặp lỗi lạ trên Windows, việc đầu tiên nên kiểm tra là bạn đã thử gõ py thay cho python chưa.
Bước tiếp theo
Thứ tự nên học trước khi viết được các chương trình này nằm trong bài học Python từ số 0: biến, điều kiện, vòng lặp, list và dict, hàm, rồi đọc ghi file. Chương trình 12 và 13 dùng tới phần đọc ghi file ở cuối danh sách đó.
Khi đã chạy hết 15 chương trình và muốn luyện nhiều hơn, ebook Bài tập Python từ số 0 có 100 bài xếp theo 10 chương, mỗi bài có lời giải và test tự chấm như bộ 12 bài miễn phí ở trên.
Các chương trình chạy trên Python 3.15.1, máy CPU Starter của AIDev Cloud (Intel Xeon E5-2680 v4, 8 vCPU, 16 GB RAM, Ubuntu 24.04.4), ngày 26/10/2026. Ngưỡng BMI theo trang WHO đọc cùng ngày.
Chuyên mục
Học PythonTham vấn chuyên môn
Nhà sáng lập AIDev và VietPlatform · Thạc sĩ AI MSE
- Tốt nghiệp thủ khoa xuất sắc Thạc sĩ AI MSE.
- Đồng sáng lập, CTO E-University, SVOnline: số hóa 10+ đại học, 40.000+ sinh viên.
- Xây hệ thống AI cho doanh nghiệp tại VietPlatform.


