שאלת רב־ברירה
שיעור 6 מתוך 11 בקורס מחולל חידונים – פרויקט OOP ב-Python של Coddy.
אתגר
בינוניצרו מחלקה MultiOptionsQuestion שיורשת מ-Question ומממשת את הבנאי ואת המתודות print ו-check של המחלקה Question.
בנאי - צריך לקבל מחרוזת, רשימה של מחרוזות ומספר שלם, ולשמור אותם בשדות question, options ו-answer_index בהתאמה.
המתודה print - מדפיסה את השאלה בתבנית הבאה,
[?] {question}
[1] {options[0]}
[2] {options[1]}
.
.
.לדוגמה, אם השאלה היא 'How many states are in the USA?' והאפשרויות הן ['49', '50', '51', '32'],
[?] How many states are in the USA?
[1] 49
[2] 50
[3] 51
[4] 32
המתודה check - מחזירה True אם מחרוזת הקלט (התשובה) שווה ל-answer_index + 1, אחרת מחזירה False
שימו לב, הקלט של המתודה check הוא מחרוזת, ועליכם להמיר אותה למספר שלם!
נסו בעצמכם
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
כל השיעורים ביחידה מחולל חידונים – פרויקט OOP ב-Python
תרגלו בעצמכם: קומפיילר Python אונליין