Menu
Coddy logo textTech

Pytanie wielokrotnego wyboru

Lekcja 6 z 11 w kursie Generator quizów — projekt z programowania obiektowego w Pythonie w Coddy.

challenge icon

Wyzwanie

Średni

Utwórz klasę MultiOptionsQuestion, która dziedziczy po Question i implementuje konstruktor oraz metody print i check z klasy Question.

 

Konstruktor – powinien otrzymać ciąg znaków, listę ciągów znaków i liczbę całkowitą, a następnie zapisać je odpowiednio w polach question, options  i answer_index.

 

Metoda print – wyświetla pytanie w formacie:

[?] {question}

[1] {options[0]}
[2] {options[1]}
.
.
.

Na przykład, jeśli pytanie to 'How many states are in the USA?', a opcje to ['49', '50', '51', '32'],

[?] How many states are in the USA?

[1] 49
[2] 50
[3] 51
[4] 32

 

Metoda check – zwraca True, jeśli wejściowy ciąg znaków (odpowiedź) jest równy answer_index + 1, a w przeciwnym razie False.

Uwaga: argument wejściowy metody check jest ciągiem znaków, więc musisz przekonwertować go na liczbę całkowitą!

Spróbuj swoich sił

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

Wszystkie lekcje w sekcji Generator quizów — projekt z programowania obiektowego w Pythonie

Poćwicz samodzielnie: Kompilator Python online