Cách giảng cho con:
"Nếu con có 1 món đồ chơi, con dùng 1 chiếc hộp (biến số). Nhưng nếu con có cả một bộ sưu tập 100 món, chẳng lẽ mình lại đi mua 100 chiếc hộp? Thay vào đó, mình sẽ dùng một Danh sách (List) giống như một cái tủ có nhiều ngăn."
Trong Python, danh sách được bọc trong dấu ngoặc vuông [ ], các món đồ cách nhau bằng dấu phẩy ,. Một điều kỳ lạ của máy tính là nó đếm từ số 0 chứ không phải số 1. Ngăn đầu tiên là ngăn số 0!
Tạo file bai5_danh_sach.py. Thư viện random giúp máy tính chọn ngẫu nhiên.
import random
# Tạo một danh sách các món ăn yêu thích của nhà mình
mon_an_yeu_thich = ["Phở bò", "Pizza", "Gà rán KFC", "Cơm tấm", "Bún chả"]
# In ra món ở vị trí đầu tiên (vị trí số 0)
print("Món đầu tiên trong danh sách là: " + mon_an_yeu_thich[0])
# Thêm một món mới vào danh sách nếu muốn
mon_an_yeu_thich.append("Lẩu nướng")
print("Hôm nay ăn gì nhỉ? Để máy tính chọn ngẫu nhiên giúp cả nhà nhé...")
# Chọn ngẫu nhiên 1 món từ danh sách
mon_may_tinh_chon = random.choice(mon_an_yeu_thich)
print("KẾT QUẢ: Tối nay nhà mình sẽ ăn món: " + mon_may_tinh_chon)
Thử thách "Hack" Code: Sau khi chạy xong bài 5, "Bây giờ các con thử tự sửa danh sách mon_an_yeu_thich thành danh sách các trò chơi (hoặc các nhân vật anime) mà các con thích xem máy tính sẽ chọn ra cái gì nhé!"
Việc kết hợp vòng lặp với danh sách (List) chính là một trong những kỹ năng cốt lõi và được sử dụng nhiều nhất trong lập trình thực tế.
Trong Python, vòng lặp for each (duyệt qua từng phần tử) cực kỳ ngắn gọn và dễ hiểu. Chúng ta sẽ cùng giải thích cho các con theo cách trực quan nhất:
Cách giảng cho con:
"Các con đã có danh sách các món ăn rồi. Bây giờ, hãy tưởng tượng mình là một lập trình viên đang xây dựng ứng dụng giống như GrabFood hay ShopeeFood. Chúng ta cần tự động đính kèm thêm tên nhà hàng (ví dụ: 'Quán Ngon - ') vào trước mỗi món ăn để người dùng biết chỗ mua. Thay vì ngồi gõ tay sửa từng món, mình sẽ bắt vòng lặp
forchạy qua từng món và tự động 'ship' tên nhà hàng vào nhé!"
Hướng dẫn con mở lại file bài 5 hoặc tạo một file mới đặt tên là bai5_nang_cap.py và gõ đoạn code dưới đây:
# 1. Tạo danh sách các món ăn ban đầu
mon_an_yeu_thich = ["Phở bò", "Pizza", "Gà rán KFC", "Cơm tấm"]
# 2. Tạo một danh sách trống mới để chứa các món sau khi đã thêm tên nhà hàng
thuc_don_grab = []
print("=== ĐANG TỰ ĐỘNG TẠO THỰC ĐƠN GRABFOOD ===")
# 3. Sử dụng vòng lặp for each để duyệt qua từng món
for mon in mon_an_yeu_thich:
# Với mỗi 'mon', ta cộng thêm chữ "Quán Ngon - " ở phía trước
mon_co_nha_hang = "Quán Ngon - " + mon
# Bỏ món mới đã sửa vào danh sách thuc_don_grab
thuc_don_grab.append(mon_co_nha_hang)
# 4. In danh sách mới ra màn hình để kiểm tra kết quả
print(thuc_don_grab)
Kết quả trên màn hình hiển thị:
=== ĐANG TỰ ĐỘNG TẠO THỰC ĐƠN GRABFOOD === ['Quán Ngon - Phở bò', 'Quán Ngon - Pizza', 'Quán Ngon - Gà rán KFC', 'Quán Ngon - Cơm
Hãy chỉ vào dòng code for mon in mon_an_yeu_thich: và giải thích cơ chế "gắp đồ" của vòng lặp này:
Vòng 1: Máy tính gắp phần tử đầu tiên là "Phở bò" bỏ vào biến tạm tên là mon. Sau đó nó thực hiện lệnh cộng chuỗi thành "Quán Ngon - Phở bò" rồi cất vào tủ mới (thuc_don_grab).
Vòng 2: Máy tính tự động quay lại, gắp phần tử tiếp theo là "Pizza" bỏ vào biến mon...
Nó cứ làm liên tục như vậy cho đến khi không còn món nào trong danh sách ban đầu nữa thì tự động dừng lại.
Sau khi các con chạy thành công, bố có thể ra một đề bài thực tế và "Oai" hơn để các con tự chỉnh sửa:
Đố con: "Bây giờ, thay vì thêm tên nhà hàng, các con hãy biến vòng lặp này thành một Cỗ máy tăng giá ngày Tết. Hãy tăng giá của các món ăn lên bằng cách thêm chữ ' - Giá: 50k' vào sau mỗi món ăn xem nào!" (Gợi ý: sửa dòng code thành
mon_moi = mon + " - Giá: 50k")
Ví dụ này sẽ giúp các con hiểu rõ sức mạnh của lập trình: dù danh sách có 4 món hay 4.000 món, máy tính cũng chỉ mất chưa đến 1 giây để xử lý xong toàn bộ!