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.
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