menu_book LESSON MODE

Chapter 8 — Hàm & Dự Án Tổng Kết

calendar_today Đăng 27 May 2026
Chapter 8 — Hàm & Dự Án Tổng Kết
school

NOW LEARNING

Chapter 8 — Hàm & Dự Án Tổng Kết

🧩
Chapter 8 — Chương Cuối

Hàm (Function)
& Dự Án Tổng Kết

Học cách đóng gói code thành hàm tái sử dụng — rồi kết hợp tất cả kiến thức để xây dựng dự án hoàn chỉnh!

📦

Hàm — Đóng gói code để dùng lại nhiều lần!

Hãy tưởng tượng bạn phải tính điểm trung bình ở 10 chỗ khác nhau trong chương trình. Thay vì viết lại 10 lần — hãy đóng gói thành một hàm, gọi bao nhiêu lần cũng được!

🍕
Hàm = Công thức làm bánh pizza Bạn viết công thức một lần. Mỗi khi muốn làm pizza, chỉ cần "gọi công thức" và điền nguyên liệu (tham số) vào. Không cần viết lại từ đầu mỗi lần!
📥
Tham số
(Input)
⚙️
Hàm xử lý
(def name)
📤
Kết quả
(return)
# Không có hàm — lặp đi lặp lại 😫
tb1 = (8 + 9 + 7) / 3
tb2 = (6 + 10 + 8) / 3
# ... còn nhiều lần nữa 😩

# Có hàm — gọn gàng và tái sử dụng ✨
def trung_binh(a, b, c):
    return (a + b + c) / 3

tb1 = trung_binh(8, 9, 7)
tb2 = trung_binh(6, 10, 8)
print(tb1, tb2)
8.0   8.0
🔬

Giải phẫu một hàm Python

Hãy nhìn kỹ từng thành phần của một hàm hoàn chỉnh:

def chao_hoi(ten, tuoi):
    """Hàm này in lời chào thân thiện"""
    loi_chao = f"Xin chào {ten}, {tuoi} tuổi!"
    return loi_chao

# Gọi hàm
ket_qua = chao_hoi("Nam", 13)
print(ket_qua)
def Từ khóa khai báo hàm — bắt buộc phải có
tên hàm Đặt tên có ý nghĩa, viết thường, dùng dấu gạch dưới
(tham số) Dữ liệu đầu vào — có thể có hoặc không
thân hàm Các lệnh bên trong — thụt lề 4 dấu cách
return Trả về kết quả — hàm có thể không cần return
Xin chào Nam, 13 tuổi!
⚙️

4 dạng hàm phổ biến

🔹 Không tham số, không return
Hàm đơn giản nhất — chỉ thực hiện một việc
def chao():\n print("Hello!")
🔸 Có tham số, không return
Nhận dữ liệu vào nhưng không trả kết quả
def chao(ten):\n print(f"Hi {ten}!")
🔷 Không tham số, có return
Tính toán và trả về giá trị cố định
def lay_pi():\n return 3.14159
⭐ Có tham số, có return
Dạng đầy đủ nhất — nhận vào và trả về kết quả
def tinh(a, b):\n return a + b
# Tham số mặc định (default parameter)
def gioi_thieu(ten, lop="chưa rõ", truong="chưa rõ"):
    print(f"Tôi là {ten}, lớp {lop}, trường {truong}")

gioi_thieu("Nam")                         # dùng mặc định
gioi_thieu("Lan", "8A")                 # đè lớp
gioi_thieu("An", "9B", "THCS Lê Lợi")    # đủ hết
Tôi là Nam, lớp chưa rõ, trường chưa rõ
Tôi là Lan, lớp 8A, trường chưa rõ
Tôi là An, lớp 9B, trường THCS Lê Lợi
🧠
Quy tắc vàng khi viết hàm: Mỗi hàm chỉ nên làm một việc duy nhất. Nếu hàm làm quá nhiều việc, hãy tách thành nhiều hàm nhỏ hơn. Code sẽ dễ đọc và dễ sửa hơn rất nhiều!
🎯

Thư viện hàm học sinh — Dùng đi dùng lại!

# === THƯ VIỆN HÀM HỌC SINH ===

def xep_loai(diem):
    """Xếp loại học sinh theo điểm"""
    if diem >= 8:   return "🌟 Giỏi"
    elif diem >= 6.5: return "✅ Khá"
    elif diem >= 5:  return "📝 Trung bình"
    else:            return "❌ Yếu"

def trung_binh(ds_diem):
    """Tính trung bình từ danh sách điểm"""
    return sum(ds_diem) / len(ds_diem)

def in_the_hoc_sinh(ten, lop, ds_diem):
    """In thẻ học sinh đẹp"""
    tb    = trung_binh(ds_diem)
    loai  = xep_loai(tb)
    print(f"{'─'*32}")
    print(f"  👤 {ten.upper():^28}")
    print(f"  📚 Lớp: {lop}")
    print(f"  📊 TB: {tb:.1f}  |  {loai}")
    print(f"  📈 Max: {max(ds_diem)}  |  Min: {min(ds_diem)}")
    print(f"{'─'*32}")

# Gọi hàm
in_the_hoc_sinh("Nguyễn Văn Nam", "8A", [8,9,7,10,8.5])
in_the_hoc_sinh("Trần Thị Lan",   "8A", [6,7,8,6.5,7])
────────────────────────────────
  👤    NGUYỄN VĂN NAM
  📚 Lớp: 8A
  📊 TB: 8.5  |  🌟 Giỏi
  📈 Max: 10  |  Min: 7
────────────────────────────────
────────────────────────────────
  👤      TRẦN THỊ LAN
  📚 Lớp: 8A
  📊 TB: 6.9  |  ✅ Khá
  📈 Max: 8   |  Min: 6
────────────────────────────────
💡 Chú ý cách hàm gọi hàm khác: in_the_hoc_sinh() gọi cả trung_binh()xep_loai() bên trong. Đây là cách lập trình viên thực sự xây dựng phần mềm!

🏆 Dự án cuối khóa

Kết hợp tất cả 8 chapter — biến, kiểu dữ liệu, tính toán, chuỗi, input, if/else, vòng lặp, list, hàm — để xây dựng một chương trình quản lý điểm hoàn chỉnh!

🏆 Dự án cuối khóa

Hệ thống Quản lý Điểm Lớp học

# ==========================================
#   HỆ THỐNG QUẢN LÝ ĐIỂM LỚP HỌC
#   Tổng hợp kiến thức Python cơ bản
# ==========================================

# --- CÁC HÀM CHỨC NĂNG ---

def xep_loai(diem):
    if   diem >= 8:   return "Giỏi"
    elif diem >= 6.5: return "Khá"
    elif diem >= 5:   return "Trung Bình"
    else:             return "Yếu"

def them_hoc_sinh(ds):
    ten  = input("Tên học sinh: ")
    diem = float(input(f"Điểm của {ten}: "))
    ds.append({"ten": ten, "diem": diem})
    print(f"✅ Đã thêm {ten}!\n")

def xem_danh_sach(ds):
    if not ds:
        print("⚠️  Danh sách trống!\n"); return
    print(f"\n{'='*40}")
    print(f"  {'STT':4} {'TÊN':20} {'ĐIỂM':6} {'XẾP LOẠI'}")
    print(f"{'─'*40}")
    for i, hs in enumerate(ds, 1):
        loai = xep_loai(hs["diem"])
        print(f"  {i:<4} {hs['ten']:<20} {hs['diem']:<6.1f} {loai}")
    print(f"{'='*40}\n")

def thong_ke(ds):
    if not ds:
        print("⚠️  Chưa có dữ liệu!\n"); return
    tat_ca_diem = [hs["diem"] for hs in ds]
    tb    = sum(tat_ca_diem) / len(tat_ca_diem)
    cao   = max(tat_ca_diem)
    thap  = min(tat_ca_diem)
    print(f"\n📊 THỐNG KÊ LỚP ({len(ds)} học sinh)")
    print(f"   Trung bình : {tb:.1f} — {xep_loai(tb)}")
    print(f"   Cao nhất   : {cao}")
    print(f"   Thấp nhất  : {thap}\n")

# --- VÒNG LẶP CHÍNH (MENU) ---
danh_sach = []
print("🏫 QUẢN LÝ ĐIỂM LỚP HỌC\n")

while True:
    print("1. Thêm học sinh")
    print("2. Xem danh sách")
    print("3. Thống kê lớp")
    print("4. Thoát")
    chon = input("Chọn (1-4): ")

    if   chon == "1": them_hoc_sinh(danh_sach)
    elif chon == "2": xem_danh_sach(danh_sach)
    elif chon == "3": thong_ke(danh_sach)
    elif chon == "4":
        print("👋 Tạm biệt!"); break
    else:
        print("⚠️  Vui lòng chọn 1-4!\n")
🏫 QUẢN LÝ ĐIỂM LỚP HỌC

1. Thêm học sinh
2. Xem danh sách ...
Chọn (1-4): 1
Tên học sinh: Nam   Điểm: 8.5
✅ Đã thêm Nam!

========================================
  STT  TÊN                 ĐIỂM   XẾP LOẠI
────────────────────────────────────────
  1    Nam                 8.5    Giỏi
========================================
🌟
Dự án này dùng tất cả kiến thức đã học! Biến, str, float, input(), if/elif/else, while, for, list, enumerate, hàm def, return — tất cả cùng phối hợp tạo nên một phần mềm thực sự!
📚

Tổng kết — Những gì bạn đã học!

Ch.0 — Mở đầu
🌐 Ngôn ngữ lập trình
Ngôn ngữ cấp cao, compiled vs interpreted
Nền tảng tư duy
Ch.1 — Khởi đầu
🐍 Python là gì?
Cài đặt, chạy chương trình đầu tiên, print()
print("Hello!")
Ch.2 — Dữ liệu
📦 Biến & Kiểu dữ liệu
int, float, str, bool — type(), quy tắc đặt tên
ten = "Nam"
Ch.3 — Tính toán
🧮 Số & Chuỗi chữ
7 phép toán, methods chuỗi, f-string
f"Xin chào {ten}"
Ch.4 — Tương tác
⌨️ Nhập dữ liệu
input(), int(), float() — chuyển đổi kiểu
int(input("..."))
Ch.5 — Quyết định
🔀 if / elif / else
Điều kiện, thụt lề, and/or/not, toán tử so sánh
if diem >= 8:
Ch.6 — Lặp lại
🔁 Vòng lặp
for, while, range(), break, continue
for i in range(10):
Ch.7 — Danh sách
📋 List
Index, slicing, append/remove/sort, duyệt list
ds = [1, 2, 3]
🚀

Bước tiếp theo — Học gì sau Python cơ bản?

Bạn đã có nền tảng vững chắc! Hãy chọn hướng đi phù hợp với đam mê của mình:

🎮
Lập trình Game
Học Pygame để tạo game 2D. Bắt đầu với game đơn giản như rắn săn mồi, Flappy Bird!
🌐
Lập trình Web
Học Flask hoặc Django để tạo website. Từ trang cá nhân đến ứng dụng web!
🤖
AI & Dữ liệu
Học pandas, numpy để phân tích dữ liệu. Tiến tới Machine Learning với scikit-learn!
📖 Học thêm ở đâu?   python.org/doc (tài liệu chính thức)  |  w3schools.com/python (thực hành online)  |  CS50P của Harvard (miễn phí!)  |  Exercism.io (bài tập theo cấp độ)
🎓 Chứng nhận hoàn thành
Python Cơ Bản
Chúc mừng! Bạn đã hoàn thành toàn bộ khóa học Python cơ bản.
Từ "Hello World" đến xây dựng ứng dụng hoàn chỉnh — bạn đã đi một chặng đường dài! 🎉
🐍 Python
📦 Biến & Kiểu DL
🔀 if/else
🔁 Vòng lặp
📋 List
🧩 Hàm

🏆 Kiểm tra cuối khóa!

Câu hỏi tổng hợp — bạn có nhớ hết không?

1️⃣Từ khóa nào dùng để khai báo hàm?
→ def
2️⃣Hàm dùng gì để trả về kết quả?
→ return
3️⃣Kể 3 loại vòng lặp kiểm soát:
→ for, while, break, continue
4️⃣Tại sao nên dùng hàm thay vì viết lại code?
→ Tái sử dụng, dễ đọc, dễ sửa
Tiến độ: ✅ HOÀN THÀNH!
🏆