
Học Python từ số 0: lộ trình cho người mới
AIDev TeamTham vấn chuyên môn: Nguyễn Việt Chung
Đăng 17 phút đọc2 lượt xem
Mục lục · 26
Học Python từ số 0 nên đi theo thứ tự: cài đặt, biến và chuỗi, điều kiện và vòng lặp, list và dict, hàm, file, module, rồi OOP. Bài này đi theo thứ tự đề cương Khóa 1 của AIDev, mỗi chặng có một đoạn code chạy trên Python 3.14 cùng lỗi người mới hay vấp ở chính chặng đó.
Người chưa biết lập trình nên học Python theo 8 chặng nối nhau: biến và kiểu dữ liệu, chuỗi, điều kiện và vòng lặp, list và dict, hàm, đọc ghi file, module và library, cuối cùng là OOP. Với khoảng 5 đến 6 giờ mỗi tuần, phần này mất 6 đến 8 tuần. Học xong, bạn tự viết được một app nhỏ lưu dữ liệu ra file và đủ nền để sang phân tích dữ liệu.
Thứ tự trên lấy từ đề cương Khóa 1 "Python từ số 0" của AIDev. Mỗi chặng dưới đây có một bài toán đời thường như tiền điện bậc thang, hóa đơn quán cà phê, sổ thu chi, kèm lỗi mà người mới hay gặp ở đúng chặng đó. Code mình chạy ngày 11/10/2026 trên Mac M4 Pro.
Cần nắm trước khi bắt đầu:
Không cần biết toán hơn cấp 2 để học phần cơ bản.
Không cần máy mạnh. Laptop văn phòng chạy được mọi đoạn code trong bài.
Phần mềm đều miễn phí: Python, VS Code, Jupyter.
Điều quyết định là gõ code mỗi tuần, không phải xem được bao nhiêu video.
Python dùng để làm gì?
Python là ngôn ngữ lập trình đa dụng. Người ta dùng nó để viết script tự động hóa việc lặp lại, làm backend cho web, và nhiều nhất hiện nay là phân tích dữ liệu, machine learning, AI. Các library quen thuộc của mảng dữ liệu như pandas, scikit-learn, PyTorch đều dùng qua Python.
Nếu đích của bạn là dữ liệu hoặc AI thì gần như không có lựa chọn khác. Trong 35 tin tuyển dụng AI Engineer mà bài AI Engineer là gì đã đọc, 30 tin đòi Python. Nếu bạn chỉ muốn làm app điện thoại hay giao diện web, phần cuối bài có nói khi nào Python không phải lựa chọn đầu tiên.
Bắt đầu từ đâu: cài Python và VS Code
Bước đầu là cài Python và một trình soạn code. Theo python.org, bản mới nhất ngày 11/10/2026 là Python 3.15.0, ra ngày 09/10/2026. Nhánh 3.14 vẫn được vá lỗi, bản mới nhất là 3.14.8 (30/09/2026).
Trên Windows, từ 3.14 python.org chuyển sang Python install manager, tải ở trang Downloads hoặc Microsoft Store. Bộ cài kiểu cũ (có ô "Add python.exe to PATH") bị đánh dấu deprecated và sẽ không còn từ 3.16, theo tài liệu Python trên Windows. Mình chưa chụp lại bước cài Windows trong bài này.
Trên macOS, bạn tải bộ cài trên python.org hoặc dùng Homebrew (
brew install python). Máy mình cài bằng Homebrew.Để viết code, cài VS Code (mình dùng bản 1.140.0) kèm extension Python và Jupyter. Không muốn cài gì thì dùng Google Colab trên trình duyệt.
Cài xong, mở Terminal gõ thử. Người mới trên Mac thường vấp ngay lệnh đầu tiên:
$ python -V
zsh: command not found: python
$ python3 -V
Python 3.14.7

Trên macOS, Python cài qua Homebrew hay bộ cài python.org đều đặt tên lệnh là python3, nên gõ python sẽ không thấy. Đây không phải lỗi cài đặt. Cứ dùng python3 là được, còn bên trong virtual environment (chặng 7) thì python lại chạy bình thường.
Nên cài Python 3.14 hay 3.15?
Học Python thuần thì bản nào cũng được. Khác biệt chỉ lộ ra khi bạn cài library để học tiếp dữ liệu và AI. Mình xem trang PyPI của từng library ngày 11/10/2026, đếm xem bản mới nhất đã có file cài sẵn (wheel) cho từng phiên bản Python chưa:
Library (bản mới nhất) | Wheel cho Python 3.14 | Wheel cho Python 3.15 |
|---|---|---|
numpy 2.5.4 | có | có |
pandas 3.0.6 | có | có |
scikit-learn 1.9.1 | có | có |
matplotlib 3.11.2 | có | có |
torch 2.14.1 | có | chưa có |
PyTorch chưa có bản cho 3.15. Khóa 1 và phần phân tích dữ liệu không đụng tới PyTorch, nên cài 3.15 vẫn học được. Còn nếu bạn định đi một mạch tới deep learning thì cài 3.14 cho đỡ phải cài lại. Máy mình đang dùng 3.14.7, và mọi đoạn code trong bài đều không dùng tính năng riêng của 3.15.
Lộ trình học Python: 8 chặng theo thứ tự nào?
Mỗi chặng dùng lại thứ của chặng trước. Đây là thứ tự của Khóa 1, kèm bài toán dùng làm ví dụ trong bài này:
Chặng | Học gì | Bài toán ví dụ |
|---|---|---|
1. Biến, kiểu dữ liệu | int, float, str, bool, | tính tiền mấy ly cà phê |
2. Chuỗi | slicing, method chuỗi, f-string | in tiền VND có dấu phân cách |
3. Điều kiện, vòng lặp |
| tiền điện bậc thang |
4. List, dict | list, tuple, dict, set, comprehension | hóa đơn quán theo menu |
5. Hàm |
| tiền điện thành hàm |
6. File | text, CSV, JSON, UTF-8, xử lý lỗi | sổ thu chi theo tháng |
7. Module, library |
| gọi API tỷ giá |
8. OOP | class, method, kế thừa, Git | class giao dịch |
Trong Khóa 1, module và pip (chặng 7) học trước file (chặng 6). Trong bài mình đảo lại để bài toán sổ thu chi đi liền với phần dữ liệu. Thứ tự hai chặng này đổi được, các chặng còn lại thì không nên đảo.
Chương 1 của khóa chỉ lo cài đặt và làm quen VS Code, Jupyter, Colab, nên chưa tính vào 8 chặng.
Chặng 1 và 2: biến, kiểu dữ liệu và chuỗi
Biến là cái tên gắn vào một giá trị. Ở chặng này bạn học bốn kiểu đầu tiên: số nguyên int, số thực float, chuỗi str, đúng sai bool. Bài toán nhỏ: hỏi giá một ly và số ly, rồi in tổng tiền.
gia = input("Giá một ly (đ): ")
so_ly = input("Số ly: ")
print("Tổng:", gia * so_ly)
Mình gõ 25000 và 3, chương trình dừng ở dòng cuối:
TypeError: can't multiply sequence by non-int of type 'str'
input() luôn trả về chuỗi, kể cả khi bạn gõ số. "25000" * "3" là nhân hai chuỗi, Python không làm được. Sửa bằng cách bọc int() quanh input(), rồi in bằng f-string với :, để có dấu phân cách hàng nghìn:
gia = int(input("Giá một ly (đ): "))
so_ly = int(input("Số ly: "))
tong = gia * so_ly
print(f"Tổng: {tong:,} đ")

Quên int() quanh input() đứng đầu danh sách 10 lỗi người mới gặp nhiều nhất ở chương 2 của sách Python từ số 0. Thông báo lỗi bằng tiếng Anh, nhưng đọc dòng cuối là đủ đoán ra: "str" nghĩa là đang có một chuỗi ở chỗ cần số.
Phần chuỗi còn lại xoay quanh việc làm sạch dữ liệu: strip() bỏ khoảng trắng thừa, lower() đưa về chữ thường, split() tách theo dấu phẩy. Nghe vụn vặt, nhưng sang pandas bạn sẽ dùng chúng hằng ngày.
Chặng 3: điều kiện và vòng lặp
Đây là chỗ chương trình bắt đầu biết "nếu thế này thì làm thế kia". Ví dụ hay nhất mình biết là tiền điện bậc thang, rút gọn còn 4 bậc theo biểu giá EVN từ 10/5/2025: 50 kWh đầu giá 1.984 đ, 50 kWh tiếp theo 2.050 đ, đến 200 kWh giá 2.380 đ, trên 200 kWh giá 2.998 đ.
Chưa học if thì chỉ viết được một công thức cố định. Công thức đúng với 120 kWh, nhưng sai khi dùng ít điện:
for so_kwh in [120, 30]:
tien = 50 * 1984 + 50 * 2050 + (so_kwh - 100) * 2380
print(so_kwh, "kWh:", tien, "đồng")
120 kWh: 249300 đồng
30 kWh: 35100 đồng
30 kWh mà chỉ hết 35.100 đ, trong khi 30 × 1.984 = 59.520 đ. Lỗi nằm ở chỗ bậc 3 bị tính âm (30 − 100 = −70) rồi trừ vào hai bậc trước. Python không báo lỗi gì, vì về mặt cú pháp chẳng có gì sai. Mình sợ loại lỗi này nhất, vì chương trình chạy êm mà số thì sai. Thêm if/elif/else cho từng bậc thì đúng:
for so_kwh in [30, 120, 250]:
if so_kwh <= 50:
tien = so_kwh * 1984
elif so_kwh <= 100:
tien = 50 * 1984 + (so_kwh - 50) * 2050
elif so_kwh <= 200:
tien = 50 * 1984 + 50 * 2050 + (so_kwh - 100) * 2380
else:
tien = 50 * 1984 + 50 * 2050 + 100 * 2380 + (so_kwh - 200) * 2998
print(f"{so_kwh:>4} kWh: {tien:>9,} đ")

Vòng for ở trên chạy cùng một phép tính cho ba mức điện. Chặng này cũng là nơi gặp lỗi thụt lề lần đầu: Python dùng khoảng trắng đầu dòng để biết dòng nào thuộc if, thiếu là báo IndentationError.
Chặng 4: list và dict
List là một dãy giá trị có thứ tự, dict là bảng tra "khóa → giá trị". Hai thứ này chiếm gần trọn chương 3 của Khóa 1. Ở đây là một quán cà phê: menu là dict, đơn hàng là list.
menu = {"cà phê sữa": 29000, "bạc xỉu": 32000, "trà đào": 35000}
don = ["cà phê sữa", "trà đào", "cà phê sữa", "sinh tố"]
tong = 0
for mon in don:
tong += menu[mon]
print(f"Tổng: {tong:,} đ")
Đơn có món "sinh tố" mà menu không có, nên chương trình dừng:
KeyError: 'sinh tố'
KeyError nghĩa là bạn tra một khóa không có trong dict. Sửa bằng cách kiểm tra trước với in, hoặc dùng menu.get(mon, 0) nếu muốn tính món lạ là 0 đồng:
for mon in don:
if mon not in menu:
print(f"Quán không có món '{mon}', bỏ qua.")
continue
tong += menu[mon]

Cuối chương 3, Khóa 1 cho phân tích một bộ điểm thi THPT, mỗi bản ghi là một dict. Viết tay điểm trung bình từng môn, thủ khoa, phân bố điểm bằng list và dict. Làm xong đoạn đó, sang pandas bạn sẽ hiểu một dòng groupby đang làm gì bên dưới.
Chặng 5: hàm
Hàm đặt tên cho một việc để gọi lại nhiều lần. Đem bài tiền điện ở chặng 3 gói thành hàm tien_dien(so_kwh) rồi cộng tiền hai tháng. Lần đầu mình để hàm print kết quả thay vì return:
def tien_dien(so_kwh):
# ... tính tien như chặng 3 ...
print(f"{so_kwh} kWh: {tien:,} đ")
thang_9 = tien_dien(120)
thang_10 = tien_dien(250)
print("Hai tháng:", thang_9 + thang_10)
120 kWh: 249,300 đ
250 kWh: 589,600 đ
TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType'

Hai dòng đầu in đúng nên dễ tưởng hàm đã chạy ổn. Nhưng hàm không có return thì trả về None, và None + None là phép cộng vô nghĩa. Đổi dòng print trong hàm thành return tien là ra Hai tháng: 838,900 đ. Lỗi này đứng đầu danh sách lỗi chương 4 của sách: in ra màn hình không giống với trả kết quả về.
Chặng này còn có tham số mặc định, docstring và lambda. Lambda trông lạ nhưng bạn sẽ gặp nó suốt khi sắp xếp dữ liệu, kiểu sorted(ds, key=lambda x: x["diem"]).
Chặng 6: đọc ghi file và xử lý lỗi
Chương trình chỉ có ích thật khi lưu được dữ liệu. File phổ biến nhất là CSV, loại file Excel mở được. Project 1 của Khóa 1 có sẵn một file giao dịch thu chi mẫu. Bản mình chạy có 30 giao dịch tháng 8 và 9/2026, đoạn dưới đọc file đó và cộng thu, chi theo tháng:
import csv
thu, chi = {}, {}
with open("so_chi_tieu.csv", encoding="utf-8") as f:
for dong in csv.DictReader(f):
thang = dong["ngay"][3:] # "05/09/2026" -> "09/2026"
so_tien = int(dong["so_tien"]) # CSV đọc ra toàn chuỗi
bang = thu if dong["loai"] == "thu" else chi
bang[thang] = bang.get(thang, 0) + so_tien
for thang in thu:
print(f"{thang} thu {thu[thang]:>11,} chi {chi[thang]:>10,} còn {thu[thang] - chi[thang]:>10,}")
Dòng có chú thích "CSV đọc ra toàn chuỗi" là do mình bỏ sót lần đầu. Thiếu int(), Python báo:
TypeError: unsupported operand type(s) for +: 'int' and 'str'

Vẫn là lỗi ở chặng 1, chỉ đổi chỗ xuất hiện: mọi thứ đọc từ file text đều là chuỗi. Tham số encoding="utf-8" cũng nên thành thói quen, vì thiếu nó thì chữ có dấu dễ vỡ khi mở file trên máy Windows.
Phần còn lại của chặng là try/except, để chương trình báo lỗi bằng tiếng Việt thay vì đổ ra traceback khi người dùng gõ chữ vào ô số tiền. Kỹ năng ít được dạy nhất ở đây là đọc traceback từ dưới lên: dòng cuối cho biết loại lỗi, dòng File ... line ngay trên chỉ đúng chỗ hỏng.
Chặng 7: module, pip và virtual environment
Python có sẵn nhiều module như math, random, datetime. Thư viện bên ngoài thì cài bằng pip từ kho PyPI. Mình thử cài requests để gọi một API tỷ giá, và lệnh đầu tiên bị từ chối:
$ python3 -m pip install requests
error: externally-managed-environment
× This environment is externally managed
Python cài qua Homebrew không cho cài package thẳng vào Python của hệ thống, theo quy ước PEP 668. Thông báo gợi ý cờ --break-system-packages, nhưng đừng dùng cờ đó. Cách đúng là tạo virtual environment (venv) riêng cho mỗi project:
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install requests

Trong venv, script gọi API chạy được:
import requests
r = requests.get("https://open.er-api.com/v6/latest/USD", timeout=10)
du_lieu = r.json()
print("Cập nhật:", du_lieu["time_last_update_utc"])
print(f"1 USD = {du_lieu['rates']['VND']:,.0f} VND")
Lỗi hay đi kèm venv là cài package xong rồi mở terminal mới mà quên kích hoạt lại, chạy code thì gặp ModuleNotFoundError. Thấy lỗi đó, hãy nhìn đầu dòng lệnh xem có chữ (.venv) chưa.
Chặng 8: lập trình hướng đối tượng (OOP)
OOP gom dữ liệu và các hàm xử lý dữ liệu đó vào một class. Bạn cần nó vì hầu hết library đều viết theo kiểu này: một DataFrame của pandas hay một model của scikit-learn đều là object. Ở Project 1, mỗi giao dịch là một object GiaoDich, tự kiểm tra số tiền và tự biết in mình ra cho đẹp:
class GiaoDich:
def __init__(self, ngay, loai, danh_muc, so_tien):
if so_tien <= 0:
raise ValueError(f"Số tiền phải lớn hơn 0, nhận {so_tien}")
self.ngay = ngay
self.loai = loai
self.danh_muc = danh_muc
self.so_tien = so_tien
def __str__(self):
dau = "+" if self.loai == "thu" else "-"
return f"{self.ngay} {self.danh_muc:<10} {dau}{self.so_tien:>11,} đ"
01/09/2026 lương + 12,000,000 đ
02/09/2026 nhà ở - 3,500,000 đ
03/09/2026 ăn uống - 55,000 đ
Traceback (most recent call last):
...
ValueError: Số tiền phải lớn hơn 0, nhận -30000
Dòng cuối là lỗi do chính mình đặt ra bằng raise, khi cố tạo một giao dịch âm 30.000 đ. Chặng này của Khóa 1 dạy thêm kế thừa, decorator, generator, type hints và Git, rồi kết thúc bằng việc đưa code lên GitHub.
Ghép lại: Project 1 quản lý chi tiêu
Sau 8 chặng, Khóa 1 cho làm một app dòng lệnh quản lý chi tiêu: thêm, xem, xóa giao dịch, thống kê tháng, top 3 danh mục chi, lưu CSV. Có hai yêu cầu quan trọng hơn mọi chức năng: gõ bậy kiểu ngày 31/02 hay chữ vào ô số tiền thì app không được sập, và tắt mở lại thì dữ liệu còn nguyên.
Bộ khung project có sẵn các phép kiểm tự động bằng unittest để bạn tự chấm, cộng một rubric chấm điểm. Nhờ vậy bạn biết mình làm đúng tới đâu mà không phải chờ ai sửa bài. Người tự học hay thiếu đúng chỗ này: viết xong mà không biết đúng hay sai.
Nếu muốn luyện thêm trước khi vào project, sách Bài tập Python từ số 0 có 100 bài xếp theo đúng các chặng trên, có lời giải và bộ test tự chấm.
Học Python mất bao lâu?
Theo kế hoạch của Khóa 1, học 5 đến 6 giờ mỗi tuần thì xong phần nền trong 6 đến 8 tuần, tức khoảng 30 đến 48 giờ tính cả làm bài. Khóa chia thành năm chương, cuối khóa là project:
Nhập môn và môi trường làm việc
Python cơ bản
Cấu trúc dữ liệu
Hàm, module và xử lý lỗi
OOP, Git và Python nâng cao
Video chỉ là phần nhỏ. Mỗi cụm bài có một notebook bài tập, mỗi chương có quiz, cuối khóa có project. Số bài và số giờ video từng chương có ở đề cương khóa Python từ số 0.
Các khóa "30 ngày học Python" không sai, nhưng 30 ngày đó thường giả định bạn học mỗi ngày. Người đi làm học vài tối một tuần thì 2 tháng là con số thực tế hơn. Chậm hơn cũng được, miễn là đều, vì nghỉ 3 tuần rồi quay lại thường phải ôn lại chặng trước.
Đã biết chút Python thì bắt đầu từ chặng nào?
Bạn không phải học lại từ chặng 1. Cách nhanh nhất là thử tự viết lại các đoạn code trong bài mà không nhìn: viết trôi chặng nào thì bỏ qua chặng đó. Nếu đã quen cả 8 chặng, điểm bắt đầu hợp lý là phân tích dữ liệu.
Muốn chấm kỹ hơn, AIDev có Bản đồ AI Engineer từ số 0, một file PDF 2 trang. Trang 2 là bảng tự chấm 15 câu cho biết nên bắt đầu từ khóa nào trong lộ trình. Bản đồ để ở trang Bản đồ AI Engineer, nhập mã BANDOAIE khi thanh toán để về 0đ.
Khi nào Python không phải lựa chọn đầu tiên?
Bạn muốn làm app iPhone hoặc Android: ngôn ngữ chính ở đó là Swift và Kotlin.
Bạn muốn làm giao diện web chạy trên trình duyệt: phải học JavaScript, Python chỉ dùng được ở phía server.
Bạn muốn làm game: các engine phổ biến dùng C# hoặc C++.
Bạn chỉ cần xử lý vài bảng tính mỗi tháng: Excel và công thức có khi đủ, học Python tốn công hơn cái lợi.
Ngoài các trường hợp đó, nhất là khi đích là dữ liệu hay AI, Python là ngôn ngữ đầu tiên hợp lý nhất.
Học xong Python thì đi tiếp đâu?
Chặng tự nhiên tiếp theo là phân tích dữ liệu với pandas. File CSV sổ thu chi ở chặng 6, mình phải viết hơn chục dòng để cộng theo tháng, pandas làm trong vài dòng. Sau đó là machine learning, deep learning và ứng dụng LLM. Bài lộ trình AI Engineer học gì, mất bao lâu nói từng chặng sau Python học gì và mất bao lâu.
Python chính là chặng 1 trong lộ trình AI Engineer từ số 0 của AIDev. Lộ trình có 5 khóa nối nhau, học bằng tiếng Việt với dữ liệu Việt Nam, mỗi khóa kết thúc bằng một project được chấm.
Câu hỏi thường gặp
Có nên học Python làm ngôn ngữ đầu tiên không?
Nên, nếu bạn hướng tới dữ liệu, tự động hóa hay AI. Cú pháp Python gần tiếng Anh, ít ký hiệu, nên người mới tập trung được vào cách giải bài toán thay vì vật lộn với dấu chấm phẩy. Nếu đích là app di động hay game thì nên học thẳng ngôn ngữ của mảng đó.
Python có khó không?
Phần cú pháp không khó, đa số người mới viết được chương trình nhỏ sau vài tuần. Phần khó là đọc lỗi và chia bài toán thành các bước. Hai thứ đó chỉ lên tay khi bạn tự gõ code và tự gỡ lỗi, xem video không thay được.
30 tuổi hoặc trái ngành học Python có muộn không?
Không muộn để học. Lợi thế của người trái ngành là có sẵn bài toán thật từ nghề cũ: kế toán thì tự động hóa đối chiếu hóa đơn, bán hàng thì tổng hợp đơn theo tháng. Chọn bài tập gần việc mình đang làm sẽ nhớ lâu hơn ví dụ trong sách.
Nên dùng VS Code, PyCharm hay Jupyter?
Người mới nên dùng VS Code vì một chỗ làm được cả file .py lẫn notebook Jupyter. Notebook tiện để thử từng đoạn và xem kết quả ngay, đó là lý do dân dữ liệu thích nó. PyCharm cũng tốt nhưng nặng hơn, không cần thiết ở giai đoạn đầu.
Học Python miễn phí ở đâu?
Python Tutorial chính thức trên docs.python.org đầy đủ nhưng khô và bằng tiếng Anh. Chương 1 Khóa 1 của AIDev (phần cài đặt và làm quen công cụ) mở miễn phí. Bài tự học AI có thêm danh sách khóa miễn phí cho từng chặng sau Python.
AI viết code được rồi, còn cần học Python không?
Cần, vì bạn vẫn phải đọc hiểu và kiểm tra code AI viết. Lỗi tiền điện ở chặng 3 là ví dụ: code chạy không báo lỗi gì mà vẫn ra số sai. Không hiểu Python thì bạn không biết nó sai. Trong lúc học, hãy tự viết trước, bí thì mới hỏi AI để nó giải thích lỗi.
Đọc tiếp
Lộ trình AI Engineer học gì, mất bao lâu: 5 chặng từ Python đến LLM và AI agent.
Tự học AI có được không: tài liệu miễn phí cho từng chặng.
AI Engineer là gì: nghề này làm gì, nhà tuyển dụng đòi gì.
Code trong bài chạy ngày 11/10/2026 trên Mac M4 Pro, macOS 27.0.1, Python 3.14.7 (Homebrew), requests 2.34.2, VS Code 1.140.0. Phiên bản Python lấy từ python.org, tình trạng wheel lấy từ PyPI cùng ngày. Thời lượng, số bài và dữ liệu Project 1 theo đề cương Khóa 1 "Python từ số 0" của AIDev, bản 11/10/2026. Giá điện rút gọn từ biểu giá EVN áp dụng từ 10/5/2025.
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.


