Menu
Coddy logo textTech

שאלת רב־ברירה

שיעור 6 מתוך 11 בקורס מחולל חידונים – פרויקט OOP ב-Python של Coddy.

challenge icon

אתגר

בינוני

צרו מחלקה 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 אונליין