开始
Coddy 测验生成器:Python 面向对象项目 课程的第 8 课,共 11 课。
挑战
中等在 Quiz 类中添加不接收输入的 start 方法,该方法会显示问题(来自 questions 字段),并向用户请求输入(答案)。
查看测试用例,以便更好地了解格式,并使用问题的 print 方法。
每次请求输入时,都要以 '[+] ' 开头。如果你不确定该怎么做,请查看提示!
注意空格和换行!
亲手试试
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
class Quiz:
def __init__(self, questions):
self.questions = questions
测验生成器:Python 面向对象项目中的所有课
自己练习: Python 在线编译器