Bỏ qua

Image

Bài 17: Ôn Tập Tổng Hợp + Dự Án Nhỏ 1

1. Mục tiêu bài học

1.1. Kiến thức

  • Ôn tập và củng cố các kiến thức Python cơ bản đã học
  • Tích hợp các khái niệm: biến, kiểu dữ liệu, cấu trúc điều khiển, hàm, list, dict
  • Hiểu cách thiết kế và xây dựng một ứng dụng hoàn chình

1.2. Kỹ năng

  • Phân tích yêu cầu và thiết kế chương trình
  • Viết code có cấu trúc, dễ đọc và bảo trì
  • Debug và xử lý lỗi
  • Tạo menu và giao diện người dùng đơn giản

1.3. Thái độ

  • Tự tin trong việc lập trình Python
  • Kiên nhẫn trong việc debug và hoàn thiện code
  • Sáng tạo trong việc thiết kế ứng dụng

2. Ôn tập kiến thức cơ bản

2.1. Biến và kiểu dữ liệu

# Các kiểu dữ liệu cơ bản
ten = "Nguyễn Văn A"        # str
tuoi = 16                   # int
diem_tb = 8.5              # float
la_hoc_sinh_gioi = True    # bool

# Kiểm tra kiểu dữ liệu
print(type(ten))           # <class 'str'>
print(type(tuoi))          # <class 'int'>

2.2. Cấu trúc điều khiển

# If-elif-else
diem = float(input("Nhập điểm: "))
if diem >= 8.5:
    xep_loai = "Giỏi"
elif diem >= 6.5:
    xep_loai = "Khá"
elif diem >= 5.0:
    xep_loai = "Trung bình"
else:
    xep_loai = "Yếu"

# Vòng lặp for
for i in range(1, 6):
    print(f"Lần {i}")

# Vòng lặp while
dem = 0
while dem < 5:
    print(f"Đếm: {dem}")
    dem += 1

2.3. List và Dictionary

# List - danh sách học sinh
hoc_sinh = ["An", "Bình", "Chi", "Dung"]
diem_so = [8.5, 7.0, 9.0, 6.5]

# Thêm, xóa phần tử
hoc_sinh.append("Em")
diem_so.append(8.0)

# Dictionary - thông tin chi tiết
thong_tin_hs = {
    "ho_ten": "Nguyễn Văn An",
    "tuoi": 16,
    "lop": "10A1",
    "diem": {
        "toan": 8.5,
        "ly": 7.5,
        "hoa": 9.0
    }
}

2.4. Hàm (Function)

def tinh_diem_trung_binh(diem_list):
    """Tính điểm trung bình từ danh sách điểm"""
    if not diem_list:
        return 0
    return sum(diem_list) / len(diem_list)

def xep_loai_hoc_luc(diem_tb):
    """Xếp loại học lực dựa trên điểm trung bình"""
    if diem_tb >= 8.5:
        return "Giỏi"
    elif diem_tb >= 6.5:
        return "Khá"
    elif diem_tb >= 5.0:
        return "Trung bình"
    else:
        return "Yếu"

# Sử dụng hàm
diem = [8.5, 7.5, 9.0, 8.0]
tb = tinh_diem_trung_binh(diem)
loai = xep_loai_hoc_luc(tb)
print(f"Điểm TB: {tb:.2f}, Xếp loại: {loai}")

3. Dự án: Quản lý điểm học sinh

3.1. Mô tả dự án

Xây dựng chương trình quản lý điểm học sinh với các chức năng:

  • Thêm thông tin học sinh mới
  • Xem danh sách học sinh
  • Tìm kiếm học sinh theo tên
  • Tính điểm trung bình và xếp loại
  • Thống kê số lượng học sinh theo từng loại

3.2. Cấu trúc dữ liệu

# Sử dụng list chứa các dictionary
danh_sach_hoc_sinh = [
    {
        "ma_hs": "HS001",
        "ho_ten": "Nguyễn Văn An",
        "lop": "10A1",
        "diem": {
            "toan": 8.5,
            "ly": 7.5,
            "hoa": 9.0,
            "van": 8.0
        }
    },
    {
        "ma_hs": "HS002", 
        "ho_ten": "Trần Thị Bình",
        "lop": "10A2",
        "diem": {
            "toan": 7.0,
            "ly": 8.5,
            "hoa": 7.5,
            "van": 8.5
        }
    }
]

3.3. Các hàm chính

def them_hoc_sinh(danh_sach):
    """Thêm học sinh mới vào danh sách"""
    print("\n=== THÊM HỌC SINH MỚI ===")
    ma_hs = input("Mã học sinh: ")
    ho_ten = input("Họ tên: ")
    lop = input("Lớp: ")

    # Nhập điểm các môn
    try:
        toan = float(input("Điểm Toán: "))
        ly = float(input("Điểm Lý: "))
        hoa = float(input("Điểm Hóa: "))
        van = float(input("Điểm Văn: "))

        hoc_sinh = {
            "ma_hs": ma_hs,
            "ho_ten": ho_ten,
            "lop": lop,
            "diem": {
                "toan": toan,
                "ly": ly,
                "hoa": hoa,
                "van": van
            }
        }

        danh_sach.append(hoc_sinh)
        print("Đã thêm học sinh thành công!")

    except ValueError:
        print("Lỗi: Điểm phải là số!")

def hien_thi_danh_sach(danh_sach):
    """Hiển thị danh sách tất cả học sinh"""
    if not danh_sach:
        print("Danh sách trống!")
        return

    print("\n=== DANH SÁCH HỌC SINH ===")
    print(f"{'Mã HS':<10} {'Họ tên':<20} {'Lớp':<10} {'TB':<8} {'Xếp loại':<15}")
    print("-" * 70)

    for hs in danh_sach:
        tb = tinh_diem_tb(hs["diem"])
        loai = xep_loai_hoc_luc(tb)
        print(f"{hs['ma_hs']:<10} {hs['ho_ten']:<20} {hs['lop']:<10} {tb:<8.2f} {loai:<15}")

def tim_kiem_hoc_sinh(danh_sach, ten_tim):
    """Tìm kiếm học sinh theo tên"""
    ket_qua = []
    for hs in danh_sach:
        if ten_tim.lower() in hs["ho_ten"].lower():
            ket_qua.append(hs)
    return ket_qua

def thong_ke_xep_loai(danh_sach):
    """Thống kê số lượng học sinh theo xếp loại"""
    thong_ke = {"Giỏi": 0, "Khá": 0, "Trung bình": 0, "Yếu": 0}

    for hs in danh_sach:
        tb = tinh_diem_tb(hs["diem"])
        loai = xep_loai_hoc_luc(tb)
        thong_ke[loai] += 1

    return thong_ke

3.4. Menu chính

def hien_thi_menu():
    """Hiển thị menu chương trình"""
    print("\n" + "="*50)
    print("     CHƯƠNG TRÌNH QUẢN LÝ ĐIỂM HỌC SINH")
    print("="*50)
    print("1. Thêm học sinh mới")
    print("2. Hiển thị danh sách học sinh")
    print("3. Tìm kiếm học sinh")
    print("4. Thống kê xếp loại")
    print("5. Thoát")
    print("-"*50)

def main():
    """Hàm chính điều khiển chương trình"""
    danh_sach_hoc_sinh = []

    while True:
        hien_thi_menu()
        lua_chon = input("Nhập lựa chọn (1-5): ")

        if lua_chon == "1":
            them_hoc_sinh(danh_sach_hoc_sinh)
        elif lua_chon == "2":
            hien_thi_danh_sach(danh_sach_hoc_sinh)
        elif lua_chon == "3":
            ten = input("Nhập tên cần tìm: ")
            ket_qua = tim_kiem_hoc_sinh(danh_sach_hoc_sinh, ten)
            if ket_qua:
                print(f"Tìm thấy {len(ket_qua)} học sinh:")
                hien_thi_danh_sach(ket_qua)
            else:
                print("Không tìm thấy học sinh nào!")
        elif lua_chon == "4":
            thong_ke = thong_ke_xep_loai(danh_sach_hoc_sinh)
            print("\n=== THỐNG KÊ XẾP LOẠI ===")
            for loai, so_luong in thong_ke.items():
                print(f"{loai}: {so_luong} học sinh")
        elif lua_chon == "5":
            print("Cảm ơn bạn đã sử dụng chương trình!")
            break
        else:
            print("Lựa chọn không hợp lệ!")

if __name__ == "__main__":
    main()

4. Bài tập thực hành tại lớp

Bài 1: Hoàn thiện chức năng sửa thông tin

Thêm chức năng cho phép sửa thông tin học sinh (tên, lớp, điểm).

Bài 2: Thêm chức năng xóa học sinh

Viết hàm xóa học sinh khỏi danh sách theo mã học sinh.

Bài 3: Sắp xếp danh sách

Viết hàm sắp xếp danh sách học sinh theo điểm trung bình (từ cao xuống thấp).

Bài 4: Lưu và đọc file

Thêm chức năng lưu danh sách vào file và đọc lại khi khởi động chương trình.

5. Bài tập về nhà

Bài 1: Mở rộng chức năng tìm kiếm

Viết chương trình cho phép tìm kiếm học sinh theo nhiều tiêu chí: mã HS, tên, lớp, xếp loại.

Bài 2: Quản lý nhiều lớp học

Mở rộng chương trình để quản lý nhiều lớp học, mỗi lớp có danh sách học sinh riêng.

Bài 3: Báo cáo chi tiết

Tạo chức năng xuất báo cáo chi tiết về điểm số của từng học sinh và thống kê tổng quan.

Bài 4: Dự án cá nhân

Thiết kế và xây dựng một chương trình quản lý thư viện sách đơn giản với các chức năng cơ bản.

6. Ghi chú quan trọng

6.1. Cấu trúc chương trình tốt

  • Chia nhỏ thành các hàm có chức năng cụ thể
  • Đặt tên biến và hàm có ý nghĩa
  • Thêm comment giải thích code
  • Xử lý lỗi với try-except

6.2. Kinh nghiệm lập trình

  • Luôn test từng phần nhỏ trước khi tích hợp
  • Backup code thường xuyên
  • Đọc và hiểu yêu cầu kỹ trước khi code
  • Không ngại refactor code để cải thiện

6.3. Lời khuyên cho học sinh

  • Thực hành nhiều để nâng cao kỹ năng
  • Học cách đọc lỗi và debug
  • Tham khảo code mẫu và học hỏi từ người khác
  • Bắt đầu từ những dự án nhỏ và đơn giản

6.4. Ứng dụng thực tế

  • Quản lý dữ liệu cá nhân
  • Tự động hóa các tác vụ lặp lại
  • Phân tích và xử lý dữ liệu đơn giản
  • Tạo các công cụ hỗ trợ học tập

7. Kết luận

Bài học này giúp các em:

  • Ôn tập toàn bộ kiến thức Python cơ bản đã học
  • Học cách thiết kế và xây dựng ứng dụng hoàn chỉnh
  • Phát triển tư duy lập trình và giải quyết vấn đề
  • Chuẩn bị cho việc học các chủ đề nâng cao hơn

Hãy tiếp tục thực hành và phát triển kỹ năng lập trình của mình!