Menu
Coddy logo textTech

הצגת התוצאות

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

נטפל בתוצאות הבוחן ונדפיס אותן.

challenge icon

אתגר

בינוני

כתבו מתודה print_results בתוך המחלקה Quiz, שמקבלת רשימה של ערכים בוליאניים כקלט (True פירושו שהתשובה לשאלה ה־ith הייתה נכונה) ומדפיסה את התוצאה בפורמט מסוים.

בדקו את מקרי הבדיקה כדי להבין את הפורמט!

נסו בעצמכם

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
    
    def start(self):
        for question in self.questions:
            question.print()
            print()
            res = question.check(input('[+] '))
            print()
            print()

כל השיעורים ביחידה מחולל חידונים – פרויקט OOP ב-Python

תרגלו בעצמכם: קומפיילר Python אונליין