Menu
CoddyTech

Trắc nghiệm

Bài học 7 trên 11 trong khóa học Dự án Python OOP: tạo trắc nghiệm của Coddy.

challenge icon

Thử thách

Dễ

Tạo một lớp Quiz.

Lớp này sẽ điều phối các câu hỏi.

 

Hãy bắt đầu bằng cách thêm hàm khởi tạo vào Quiz. Hàm khởi tạo sẽ nhận danh sách câu hỏi (lớp Question) và lưu danh sách đó vào trường có tên questions.

Tự làm thử

from abc import ABC, abstractmethod


class Question(ABC):
    @abstractmethod
    def print(self):
        pass

    @abstractmethod
    def check(self, answer):
        pass


class YesNoQuestion(Question):
    def __init__(self, question, answer):
        self.question = question
        self.answer = answer

    def print(self):
        print('[?] ' + self.question + ' (yes/no)')
    
    def check(self, answer):
        return (answer == 'yes' and self.answer) or \
            (answer == 'no' and not self.answer)


class OpenQuestion(Question):
    def __init__(self, question, answers):
        self.question = question
        self.answers = answers

    def print(self):
        print('[?] ' + self.question)
    
    def check(self, answer):
        return answer in self.answers


class MultiOptionsQuestion(Question):
    def __init__(self, question, options, answer_index):
        self.question = question
        self.options = options
        self.answer_index = answer_index

    def print(self):
        print('[?] ' + self.question)
        print()
        for i in range(len(self.options)):
            print('[' + str(i + 1) + '] ' + self.options[i])
    
    def check(self, answer):
        return self.answer_index == int(answer) - 1

Tất cả bài học trong Dự án Python OOP: tạo trắc nghiệm

Tự luyện tập: Trình biên dịch Python online