Python Forum

Full Version: Having issues getting a multiple choice test program to work
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I have been working on a program that I saw on a tutorial that creates Multiple choice test.

I created a class named Question.
Code for Question:
class Question:
    def _init_(self, prompt, answer):
        self.prompt = prompt
        self.answer = answer
The rest of my code is another file
Rest of Code:

from Question import Question
question_prompts = [
    "What kind of vessel is the Japanese Soryu Class?\n(a) Submarine\n(b) Frigate\n(c) Destroyer\n(d) Cruiser\n\n",
    "What is the primary anti-ship weapon of the US Navy?\n(a) SM2\n(b) SM6\n(c) Sea_Sparrow\n(d) Harpoon\n\n",
    "Name of the new destroyer class in the Chinese PLA Navy?\n(a) Type_45\n(b) Type_52C\n(c) Type_55\n(d) Type_23\n\n"
]

questions = (
    Question(question_prompts[0], "a"),
    Question(question_prompts[1], "d"),
    Question(question_prompts[2], "c"),
)

def run_test(questions):
    score = 0
    for question in questions:
        answer = input(question.prompt)
        if answer == question.answer:
            score += 1
    print("You got " + str(score) + "/" + str(len(question)) + "correct ")

run_test(questions)
When I run the code the following error is created
Error:
Traceback (most recent call last): File "C:/Users/johne/PycharmProjects/untitled/Multiple choice quiz.py", line 9, in <module> Question(question_prompts[0], "a"), TypeError: Question() takes no arguments
I am unsure of what the issue is with the arguments. Any help would be greatly appreciated
The problem is in your Question() class init method. It should have two trailing underscores on each side, not one:
# your init
def _init_(self, prompt, answer):

# correct init
def __init__(self, prompt, answer):
And next time when you post on the forums, please use Python code tags and error tags. Help is available here.
Hey guys thanks for the suggestions! You helped me fix my code. I will definitely read up on this stuff.