Skip to content

📊 10.4 Ứng dụng thực tế list 2 chiều

📖 Giới thiệu

List 2 chiều có rất nhiều ứng dụng thực tế trong đời sống và lập trình. Từ quản lý dữ liệu học tập đến xây dựng game đơn giản, việc hiểu và sử dụng thành thạo list 2 chiều sẽ giúp bạn giải quyết nhiều bài toán thực tế.

INFO

List 2 chiều rất hữu ích cho việc lưu trữ và xử lý dữ liệu có cấu trúc dạng bảng

🎓 Ứng dụng trong giáo dục

📚 Hệ thống quản lý điểm

python
# Bảng điểm lớp 12A1
class_scores = [
    ["Nguyễn Văn A", 8, 9, 7, 8.5],
    ["Trần Thị B", 9, 8, 9, 8.7],
    ["Lê Văn C", 7, 8, 8, 7.7],
    ["Phạm Thị D", 10, 9, 8, 9.0]
]

def in_bang_diem(scores):
    print("📊 BẢNG ĐIỂM LỚP 12A1")
    print("-" * 50)
    print(f"{'Tên':<15} {'Toán':<6} {'Lý':<6} {'Hóa':<6} {'TB':<6}")
    print("-" * 50)
    
    for hoc_sinh in scores:
        ten = hoc_sinh[0]
        toan = hoc_sinh[1] 
        ly = hoc_sinh[2]
        hoa = hoc_sinh[3]
        tb = hoc_sinh[4]
        print(f"{ten:<15} {toan:<6} {ly:<6} {hoa:<6} {tb:<6}")

in_bang_diem(class_scores)

TIP

Sử dụng list 2 chiều để quản lý thông tin học sinh một cách có tổ chức

📅 Thời khóa biểu thông minh

python
# Thời khóa biểu tuần
schedule = [
    ["Thứ 2", "Toán", "Lý", "Hóa", "Văn", "Anh"],
    ["Thứ 3", "Anh", "Toán", "Sử", "Địa", "Sinh"], 
    ["Thứ 4", "Lý", "Hóa", "Anh", "Toán", "GDCD"],
    ["Thứ 5", "Văn", "Sử", "Địa", "Sinh", "Tin"],
    ["Thứ 6", "Thể dục", "Âm nhạc", "Mỹ thuật", "Chào cờ", "Sinh hoạt"]
]

def tim_mon_hoc(schedule, mon):
    """Tìm môn học xuất hiện vào ngày nào"""
    lich_hoc = []
    for ngay in schedule:
        ten_ngay = ngay[0]
        for tiet, mon_hoc in enumerate(ngay[1:], 1):
            if mon_hoc == mon:
                lich_hoc.append(f"{ten_ngay} - Tiết {tiet}")
    return lich_hoc

# Tìm lịch học Toán
lich_toan = tim_mon_hoc(schedule, "Toán")
print("📚 Lịch học môn Toán:")
for lich in lich_toan:
    print(f"  • {lich}")

🎮 Ứng dụng trong game

⭕ Game Tic-Tac-Toe

python
def khoi_tao_bang():
    """Tạo bàn cờ 3x3 trống"""
    return [[' ' for _ in range(3)] for _ in range(3)]

def in_bang_co(board):
    """In bàn cờ tic-tac-toe"""
    print("\n  🎮 TIC-TAC-TOE")
    print("    0   1   2")
    for i, hang in enumerate(board):
        print(f"{i}   {hang[0]} | {hang[1]} | {hang[2]}")
        if i < 2:
            print("   ---|---|---")

def kiem_tra_thang(board, player):
    """Kiểm tra người chơi có thắng không"""
    # Kiểm tra hàng
    for hang in board:
        if all(o == player for o in hang):
            return True
    
    # Kiểm tra cột
    for cot in range(3):
        if all(board[hang][cot] == player for hang in range(3)):
            return True
    
    # Kiểm tra đường chéo
    if all(board[i][i] == player for i in range(3)):
        return True
    if all(board[i][2-i] == player for i in range(3)):
        return True
    
    return False

# Demo game
board = khoi_tao_bang()
board[1][1] = 'X'  # X đánh giữa
board[0][0] = 'O'  # O đánh góc
board[2][2] = 'X'  # X đánh góc đối diện

in_bang_co(board)
if kiem_tra_thang(board, 'X'):
    print("🎉 X thắng!")

WARNING

Trong game thực tế, cần thêm kiểm tra input và xử lý lỗi

💣 Trò chơi tìm mìn đơn giản

python
import random

def tao_ban_min(kich_thuoc=5, so_min=5):
    """Tạo bàn mìn với kích thước và số mìn cho trước"""
    ban = [[0 for _ in range(kich_thuoc)] for _ in range(kich_thuoc)]
    
    # Đặt mìn ngẫu nhiên
    min_da_dat = 0
    while min_da_dat < so_min:
        x = random.randint(0, kich_thuoc-1)
        y = random.randint(0, kich_thuoc-1)
        if ban[x][y] != -1:  # -1 là mìn
            ban[x][y] = -1
            min_da_dat += 1
    
    return ban

def in_ban_min(board):
    """In bàn mìn (dành cho debug)"""
    print("\n💣 BẢN MÌN (Debug)")
    for hang in board:
        for o in hang:
            if o == -1:
                print("💣", end=" ")
            else:
                print(f"{o:2}", end=" ")
        print()

# Demo
ban_min = tao_ban_min(4, 3)
in_ban_min(ban_min)

📈 Ứng dụng phân tích dữ liệu

💰 Thống kê doanh thu

python
# Doanh thu 12 tháng của 3 chi nhánh (tỷ VND)
doanh_thu = [
    [15.2, 18.5, 22.1, 19.8, 25.3, 28.7, 32.1, 29.9, 26.5, 30.2, 34.8, 38.5],  # Chi nhánh HN
    [12.8, 16.2, 18.9, 17.5, 21.2, 24.8, 27.3, 25.1, 22.9, 26.7, 29.5, 32.1],  # Chi nhánh HCM  
    [8.5, 10.2, 12.7, 11.3, 14.8, 16.9, 19.2, 17.8, 15.6, 18.3, 20.7, 23.4]    # Chi nhánh DN
]

chi_nhanh = ["Hà Nội", "TP.HCM", "Đà Nẵng"]

def thong_ke_doanh_thu(data, names):
    """Thống kê doanh thu các chi nhánh"""
    print("📊 THỐNG KÊ DOANH THU NĂM 2024")
    print("=" * 50)
    
    for i, cn in enumerate(names):
        tong = sum(data[i])
        tb = tong / 12
        print(f"🏢 {cn}:")
        print(f"   Tổng: {tong:.1f} tỷ VND")
        print(f"   TB/tháng: {tb:.1f} tỷ VND")
        print()

def tim_thang_cao_nhat(data, names):
    """Tìm tháng có doanh thu cao nhất"""
    max_dt = 0
    thang_max = 0
    cn_max = ""
    
    for i, cn_data in enumerate(data):
        for thang, dt in enumerate(cn_data):
            if dt > max_dt:
                max_dt = dt
                thang_max = thang + 1
                cn_max = names[i]
    
    print(f"🏆 Doanh thu cao nhất: {max_dt:.1f} tỷ")
    print(f"📅 Tháng {thang_max}/2024 - Chi nhánh {cn_max}")

thong_ke_doanh_thu(doanh_thu, chi_nhanh)
tim_thang_cao_nhat(doanh_thu, chi_nhanh)
Bài tập thực hành

Bài 1: Quản lý lớp học Tạo danh sách học sinh với thông tin: [Tên, Tuổi, Điểm TB]. Viết hàm:

  • Tìm học sinh có điểm cao nhất
  • Tính điểm trung bình của cả lớp
  • In danh sách học sinh theo thứ tự điểm giảm dần

Bài 2: Game đoán số Tạo ma trận 4x4 chứa các số từ 1-16. Người chơi đoán vị trí của một số:

  • Hiển thị ma trận với dấu "?"
  • Nhận input từ người chơi
  • Kiểm tra và hiển thị kết quả

Bài 3: Bảng nhiệt độ Lưu nhiệt độ 7 ngày trong tuần, 4 khung giờ (sáng, trưa, chiều, tối):

  • Tính nhiệt độ trung bình theo ngày
  • Tìm khung giờ nóng nhất trong tuần
  • So sánh nhiệt độ giữa các ngày

📚 Tóm tắt

List 2 chiều có rất nhiều ứng dụng thực tế:

  • 🎓 Giáo dục: Quản lý điểm, thời khóa biểu, danh sách học sinh
  • 🎮 Game: Tic-tac-toe, minesweeper, puzzle games
  • 📊 Dữ liệu: Thống kê, báo cáo, phân tích theo thời gian
  • 💼 Kinh doanh: Doanh thu, inventory, customer data

Lời khuyên

Bắt đầu với các ứng dụng đơn giản rồi dần phát triển thành các hệ thống phức tạp hơn

🐍 Khóa học Python căn bản bằng tiếng Việt