Giới thiệu
Mỗi lập trình viên đều phải bắt đầu từ đâu đó, và đối với tôi, đó là biến tình yêu của mình với Harry Potter thành mã nguồn. Trong dự án portfolio CS101 của mình, tôi đã xây dựng một trò chơi quiz đơn giản trên giao diện dòng lệnh (CLI) để kiểm tra kiến thức của bạn về thế giới phù thủy. Trong quá trình thực hiện, tôi đã học được cách sử dụng các lớp trong Python, vòng lặp và xác thực đầu vào để tạo ra một trải nghiệm tương tác ngay trong terminal.
Tại Sao Chọn Dự Án Này
Tôi có thể đã chọn Tic-Tac-Toe, hoặc Blackjack, nhưng tôi muốn điều gì đó cá nhân hơn (và ma thuật hơn). Một quiz về Harry Potter cảm thấy là sự kết hợp hoàn hảo giữa niềm vui và khả năng thực hiện... và hãy thành thật mà nói, việc thêm điểm nhà làm mọi thứ trở nên thú vị hơn rất nhiều.
Demo
Cách Hoạt Động
Tâm điểm của quiz này được xây dựng trên một lớp Question
đơn giản trong Python:
python
class Question:
def __init__(self, question_text, choices, answer):
self.question_text = question_text
self.choices = choices
self.answer = answer
Mỗi đối tượng Question
lưu trữ văn bản câu hỏi, các tùy chọn trắc nghiệm và câu trả lời đúng.
Trò chơi sau đó:
- Lặp qua danh sách các đối tượng
Question
- In câu hỏi và các lựa chọn
- Sử dụng
input()
để nhận phản hồi của người dùng - Kiểm tra xem câu trả lời có đúng không
- Trao điểm nhà tương ứng
Dự án này là một cách tuyệt vời để thực hành:
- Sử dụng OOP (Lập trình Hướng đối tượng) để có cấu trúc sạch hơn
- Xác thực đầu vào người dùng để tránh sự cố
- Giữ điểm số qua nhiều vòng chơi
Thách Thức và Giải Pháp
- Lỗi "Nhập đôi": Có lúc, quiz của tôi yêu cầu câu trả lời hai lần cho mỗi câu hỏi. Kết quả là tôi đã có hai dòng
input
trong phương thức thay vì một. Bài học rút ra: Luôn luôn kiểm tra xem có bị nhắc lại không. - Xác thực đầu vào: Đảm bảo rằng chương trình không bị lỗi khi người dùng gõ "lol" thay vì "1". Một vòng lặp đơn giản với
isdigit()
đã khắc phục vấn đề đó.
Những Gì Tôi Đã Học Được
- Hệ thống lớp của Python giúp quản lý dữ liệu lặp đi lặp lại (như câu hỏi quiz) dễ dàng hơn rất nhiều.
- Thiết kế CLI sạch sẽ rất quan trọng, ngay cả những điều đơn giản như
print("=" * 40)
cũng làm cho đầu ra dễ đọc hơn. - Gỡ lỗi cũng liên quan đến việc đọc logic của chính bạn cũng như là ngôn ngữ lập trình.
Cải Tiến Tương Lai
- Ngẫu nhiên hóa thứ tự câu hỏi
- Thêm các danh mục (ví dụ: "Chỉ Sách", "Phim", "Lore Cực Khó")
Hãy Thử Ngay
Bạn có thể xem mã nguồn đầy đủ tại đây:
Quiz Potterhead
Hãy nhân bản nó, chạy bằng python quiz.py
, và xem bạn có thể kiếm được bao nhiêu điểm cho nhà của mình.
Hướng dẫn đầy đủ sẽ có trong tệp README.md
của kho lưu trữ.
Kết Luận
Dự án này là lần đầu tiên tôi thực sự trải nghiệm việc sử dụng Python để tạo ra một thứ gì đó tương tác và thú vị. Nó không hào nhoáng, nhưng rất chức năng, và đã mang lại cho tôi kinh nghiệm thực tế với OOP, đầu vào của người dùng và quy trình làm việc với Git. Quan trọng nhất, nó cho tôi thấy rằng ngay cả một dự án nhỏ cũng có thể là bước đệm cho những dự án lớn hơn và phức tạp hơn.