Quiz Foundation

With the Quiz Foundation you can… - … create Quizzes with quiz.quiz.py - … create Questions of different kinds with quiz.question_factory.py - … attempt quizzes with quiz.attempt.py.

Lets get threw the process.

1. Init a quiz

With the class Quiz in quiz.quiz.py, you create a new quiz by creating a new Quiz-object. You can specify an author by entering the authors’ name by argument. Otherwise, the author is an empty string.

my_quiz = Quiz("my_name")

Before you can add a question to the quiz you have to create one.

2. Create a question

You can create a new question by using one of the subclasses of Question in quiz.question_factory.py. You have to pass two arguments by the creator: - the question itself as a string - the correct answer(s separated by a ‘,’ if it’s a multiple-choice question) as a string.

Whatever kind of question you choose, the program checks if the entered answer is convertible to the wanted format. In this case, you just want to ask for a string.

>>> my_question = QuestionString("What's the best project?", "QuizBot")

Now we want to add this question to our quiz.

3. Add a question to quiz

We can add an instance of the class Question simply by calling my_quiz.add_question.

>>> my_quiz.add_question(my_question)

If we’d want to add more questions to the quiz, we would create a new question and add it. Otherwise, we could specify if we want to print questions in random order (and more stuff ;). At the moment we don’t want to do more. But we want to attempt it.

4. Attempt to quiz

We can attempt to a quiz by passing it to the constructor of the Attempt class in quiz.attempt.py.

>>> my_attempt = Attempt(my_quiz)

Now we can if it has a question left with has_next_question. In that case, we can ask for the question itself with act_question. If we know the answer to the question, we pass it by input_answer as a string and call enter_answer to enter it. You can check whether you were right or not by checking the return value of enter_answer.

>>> print(my_attempt.has_next_question())
true
>>> print(my_attempt.act_question)
"What's the best project?"
>>> act_question.input_answer("QuizBot")
>>> print(act_question.enter_answer())
true
>>> print(my_attempt.has_next_question())
false

Because we don’t have questions left, we can check the result of every question in my_attempt.user_points. That’s it…it’s not rocket science ;)