Pertanyaan dengan Beberapa Pilihan
Pelajaran 6 dari 11 dalam kursus Generator Kuis: Proyek OOP Python di Coddy.
Tantangan
SedangBuat class MultiOptionsQuestion yang mewarisi Question dan mengimplementasikan constructor serta method print dan check dari class Question.
Constructor - harus menerima string, list berisi string, dan integer, lalu menyimpannya masing-masing dalam field question, options dan answer_index.
method print - mencetak pertanyaan dengan format berikut,
[?] {question}
[1] {options[0]}
[2] {options[1]}
.
.
.Misalnya, jika pertanyaannya adalah 'How many states are in the USA?' dan opsinya adalah ['49', '50', '51', '32'],
[?] How many states are in the USA?
[1] 49
[2] 50
[3] 51
[4] 32
method check - mengembalikan True jika string input (jawaban) sama dengan answer_index + 1, jika tidak, False
Catatan, input untuk method check berupa string, kamu harus mengubahnya menjadi integer!
Coba sendiri
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
Semua pelajaran di Generator Kuis: Proyek OOP Python
Latihan sendiri: Compiler Python online