Tin học lớp 4-5 - Bài 10: Dự án Trò đố vui tương tác (tổng hợp Vỡ lòng Python)

Bài 10 — Dự án: Trò đố vui tương tác (bài tổng hợp cuối khóa)

 Mục tiêu bài học
  • Ghép tất cả những gì đã học: biến, input, if/else, vòng lặp for, danh sách.
  • Tự tay xây một trò đố vui hoàn chỉnh biết chấm điểm người chơi.
  • Biết cách cộng dồn điểm và tổng kết kết quả cuối trò chơi.
Hỏi 1 câu (từ danh sách) Người chơi trả lời (input) Đúng? diem = diem + 1 Lặp for cho câu tiếp theo Hết câu → in tổng điểm Đúng Trò đố vui: hỏi từng câu, người chơi trả lời, chấm đúng thì +1 điểm, hết câu in tổng điểm.
Chúc mừng em đã đến bài cuối! Suốt 9 bài qua em đã học từng viên gạch nhỏ. Hôm nay ta xây một "ngôi nhà" hoàn chỉnh từ những viên gạch đó: một trò đố vui hỏi 3 câu, người chơi trả lời, máy chấm điểm rồi khen thưởng. Đây chính là cách người lớn viết phần mềm thật đấy!

1. Bước 1 — Cất câu hỏi và đáp án vào danh sách

Ta dùng danh sách (Bài 9) để chứa các câu hỏi, và một danh sách khác chứa đáp án đúng tương ứng. Câu hỏi thứ i sẽ có đáp án thứ i.
cau_hoi = [
    "Thu do cua Viet Nam la gi?",
    "2 + 3 x 2 bang bao nhieu?",
    "Con vat nao keu meo meo?"
]
dap_an = ["ha noi", "8", "meo"]
Nhớ Bài 9: cau_hoi[0] là câu đầu tiên, dap_an[0] là đáp án của nó. Chúng đi thành cặp.

2. Bước 2 — Chuẩn bị biến đếm điểm

Trước khi hỏi, ta tạo một biến diem = 0. Mỗi khi người chơi trả lời đúng, ta cộng thêm 1 điểm (Bài 3 & Bài 7 đã dùng mẹo diem = diem + 1).
diem = 0

3. Bước 3 — Hỏi từng câu bằng vòng lặp for

Ta dùng range(3) để lấy chỉ số 0, 1, 2 — lần lượt hỏi 3 câu. Mỗi vòng: in câu hỏi, nhận câu trả lời bằng input, rồi so sánh với đáp án bằng if/else.
for i in range(3):
    print(cau_hoi[i])
    tra_loi = input("Tra loi: ")
    if tra_loi == dap_an[i]:
        print("Dung roi! +1 diem")
        diem = diem + 1
    else:
        print("Sai roi. Dap an dung la", dap_an[i])
Chú ý: dấu == (hai dấu bằng) dùng để so sánh xem hai thứ có bằng nhau không (Bài 6). Một dấu = là để gán giá trị.

4. Bước 4 — Tổng kết và khen thưởng

Sau khi vòng lặp chạy hết 3 câu, ta in ra tổng điểm. Rồi dùng if/elif/else để đưa ra lời khen phù hợp với số điểm.
3/3 Tuyệt vời! Em là nhà vô địch! Cuối trò chơi, máy tính tổng kết số điểm và khen thưởng người chơi.
print("Em duoc", diem, "diem!")
if diem == 3:
    print("Tuyet voi! Em la nha vo dich!")
elif diem >= 1:
    print("Kha lam! Co gang them nhe.")
else:
    print("Khong sao, choi lai lan nua nhe!")
Đã ghép đủ 5 mảnh: danh sách (chứa câu hỏi) + biến (đếm điểm) + vòng lặp for (hỏi lần lượt) + input (nhận trả lời) + if/else (chấm & khen). Đúng là một sản phẩm thật sự!

5. Ghi nhớ nhanh — các mảnh ghép của một chương trình

Mảnh ghépVai trò trong trò đố vui
Danh sách (list)Cất sẵn câu hỏi và đáp án
Biến diem = 0Đếm số câu trả lời đúng
Vòng lặp forHỏi lần lượt từng câu
input()Nhận câu trả lời của người chơi
if / elif / elseChấm điểm và khen thưởng

✎ Phần A — Trắc nghiệm (5 câu)

Câu 1. Ta dùng cấu trúc nào để cất sẵn nhiều câu hỏi?

Dùng danh sách để chứa nhiều câu hỏi, rồi lấy từng câu bằng chỉ số cau_hoi[i].

Câu 2. Biến diem nên được đặt bằng bao nhiêu TRƯỚC khi bắt đầu hỏi?

Bắt đầu với diem = 0 (chưa trả lời câu nào), rồi cộng 1 mỗi lần đúng.

Câu 3. Để KIỂM TRA câu trả lời có bằng đáp án không, ta dùng dấu gì?

== để so sánh bằng nhau. Một dấu = là để GÁN giá trị, không phải so sánh.

Câu 4. Khi người chơi trả lời ĐÚNG, ta viết gì để cộng điểm?

diem = diem + 1: lấy điểm hiện tại cộng thêm 1 rồi gán lại. Đây là cách cộng dồn.

Câu 5. Trò đố vui này KHÔNG dùng tới kiến thức nào sau đây?

Trò đố vui dùng danh sách, biến, for, input, if/else. Chú Rùa (turtle) là để vẽ hình, không cần ở đây.

 Phần B — Chơi thử trò đố vui hoàn chỉnh!

Đây là thành quả của cả khóa học! Bấm Chạy, máy sẽ hỏi 3 câu. Gõ câu trả lời rồi bấm OK. Cuối cùng máy chấm điểm cho em. (Gợi ý đáp án: ha noi / 8 / meo)
(Kết quả sẽ hiện ở đây sau khi em bấm Chạy...)
Thử thách cuối khóa: Thêm câu hỏi thứ 4 của riêng em vào cả hai danh sách cau_hoidap_an, rồi đổi range(3) thành range(4). Em vừa tự mở rộng một phần mềm đấy!
 Chúc mừng em đã hoàn thành khóa "Vỡ lòng lập trình Python"!
Từ câu lệnh print đầu tiên đến một trò đố vui hoàn chỉnh — em đã đi một chặng đường thật dài. Hãy tiếp tục sáng tạo những chương trình của riêng mình nhé!