1 class UserInterface (object):
2 "Give a quiz over a generic user interface"
3 def __init__(self, quiz=None, answers=None):
10 raise NotImplementedError()
12 def display_results(self):
13 raise NotImplementedError()
15 def get_question(self):
16 remaining = self.get_unanswered()
20 def process_answer(self, question, answer):
21 if question not in self.answers:
22 self.answers[question] = []
23 correct = question.check(answer)
24 self.answers[question].append({
30 def get_answered(self):
31 return [q for q in self.quiz if q in self.answers]
33 def get_unanswered(self):
34 return [q for q in self.quiz if q not in self.answers]
36 def get_correctly_answered(self):
37 return [q for q in self.quiz
38 if True in [a['correct'] for a in self.answers.get(q, [])]]
40 def get_never_correctly_answered(self):
41 return [q for q in self.quiz
42 if True not in [a['correct'] for a in self.answers.get(q, [])]]