Tin học lớp 4-5 - Bài 16: Từ điển (dictionary) - sổ điểm theo tên (Python & Toán)

Bài 16: Từ điển (dictionary) — sổ điểm theo tên

🎯 Mục tiêu bài học: Em sẽ học cách dùng từ điển (dictionary) để lưu điểm theo tên từng bạn, biết cách tra điểm, thêm bạn mới, sửa điểmduyệt cả sổ để đọc tên kèm điểm.
so_diem = {"An": 9, "Binh": 7, "Cuc": 10}"An"9"Binh"7"Cuc"10Khóa (tên)Giá trị (điểm)
Từ điển (dictionary) gồm nhiều cặp khóa → giá trị: mỗi tên gắn với một điểm.
Bài 15, danh sách [8, 10, 6] chỉ lưu điểm chứ không biết điểm đó của ai. Nếu muốn biết "bạn An được bao nhiêu điểm?" thì danh sách không giúp được. Lúc này ta dùng từ điển: mỗi điểm được gắn với một tên — giống như sổ điểm của cô giáo!

1. Từ điển là gì?

Một từ điển viết trong dấu ngoặc nhọn { }, gồm nhiều cặp khóa: giá trị. Ở đây khóa là tên bạn, giá trị là điểm.
# So diem theo ten
so_diem = {"An": 9, "Binh": 7, "Cuc": 10}
print(so_diem)
💡 Mẹo: Khóa thường là chữ (đặt trong ngoặc kép), còn giá trị có thể là số hay chữ. Dấu : ngăn giữa khóa và giá trị.

2. Tra điểm của một bạn

Viết so_diem["An"] để lấy điểm của bạn An. Đặt tên (khóa) trong ngoặc vuông, máy sẽ trả về điểm tương ứng.
so_diem["An"]Tra khóa "An"9trả vềViết tên trong ngoặc vuông để lấy điểm của bạn đó.
Dùng so_diem["An"] để tra nhanh điểm của bạn An là 9.
so_diem = {"An": 9, "Binh": 7}
print(so_diem["An"])    # 9
print(so_diem["Binh"])  # 7
💡 Mẹo: Phải viết đúng tên như khi tạo. Gõ so_diem["an"] (chữ thường) sẽ bị báo lỗi vì không có khóa đó.

3. Thêm bạn mới và sửa điểm

Để thêm hoặc sửa, chỉ cần gán: so_diem["Dan"] = 8. Nếu chưa có tên đó thì thêm mới; nếu đã có thì điểm cũ bị thay bằng điểm mới.
so_diem = {"An": 9, "Binh": 7}
so_diem["Dan"] = 8    # them ban moi
so_diem["An"] = 10    # sua diem An tu 9 thanh 10
print(so_diem)
💡 Mẹo: Cùng một câu lệnh gán làm được cả hai việc: có khóa thì sửa, chưa có thì thêm.

4. Đếm sỉ số và kiểm tra có tên không

len(so_diem) cho biết sổ có bao nhiêu bạn. Còn "An" in so_diem kiểm tra xem bạn An có trong sổ hay không (trả về True / False).
so_diem = {"An": 9, "Binh": 7}
print(len(so_diem))       # 2 ban
print("An" in so_diem)   # True
💡 Mẹo: Dùng in trước khi tra điểm giúp tránh lỗi khi tên không có trong sổ.

5. Duyệt cả sổ bằng vòng lặp for

Dùng for ten in so_diem: để lần lượt lấy từng tên, rồi so_diem[ten] cho điểm của bạn đó — in ra cả sổ điểm.
so_diem = {"An": 9, "Binh": 7, "Cuc": 10}
for ten in so_diem:
    print(ten, ":", so_diem[ten])
🎯 Ghi nhớ: Vòng for trên từ điển sẽ chạy qua từng khóa (tên). Muốn lấy điểm thì viết so_diem[ten].

📋 Bảng ghi nhớ lệnh cho từ điển

LệnhÝ nghĩaVí dụ
so_diem["An"]Tra điểm theo tên9
so_diem["Dan"] = 8Thêm bạn mớithêm Dan: 8
so_diem["An"] = 10Sửa điểm đã cóAn thành 10
len(so_diem)Đếm số bạn2
"An" in so_diemKiểm tra có tênTrue

✎ Luyện tập: 5 câu trắc nghiệm

Câu 1. Từ điển được viết trong loại dấu ngoặc nào?

Từ điển dùng ngoặc nhọn { } với các cặp khóa: giá trị. (Ngoặc vuông [ ] là của danh sách.)

Câu 2. Với so_diem = {"An": 9, "Binh": 7}, lệnh so_diem["Binh"] cho kết quả gì?

so_diem["Binh"] tra khóa "Binh" và trả về giá trị (điểm) là 7.

Câu 3. Muốn thêm bạn Dan với điểm 8 vào sổ, em viết lệnh nào?

Gán so_diem["Dan"] = 8 sẽ thêm khóa "Dan" với giá trị 8. Khóa luôn đặt trong ngoặc vuông.

Câu 4. Với so_diem = {"An": 9, "Binh": 7, "Cuc": 10}, lệnh len(so_diem) cho kết quả gì?

len đếm số cặp khóa: giá trị. Có 3 bạn nên kết quả là 3. (26 là tổng điểm, không phải số bạn.)

Câu 5. Vòng lặp for ten in so_diem: sẽ lần lượt lấy ra cái gì?

for trên từ điển chạy qua các khóa (tên). Muốn có điểm thì viết thêm so_diem[ten].

💻 Thực hành: Chạy Python ngay trên trình duyệt

Hãy thử: Sổ điểm dưới đây lưu điểm theo tên. Chương trình tra điểm một bạn, thêm bạn mới, rồi in cả sổ. Đổi tên/điểm rồi bấm Chạy!
(Kết quả sẽ hiện ở đây sau khi em bấm Chạy)
🎉 Thử thách: Thêm bạn của em vào sổ (ví dụ so_diem["Em"] = 10), rồi chạy lại xem sổ có bao nhiêu bạn và tên em có xuất hiện không!