Please help me, I want to make a quiz in python (And a game, if I get the time), can someone help me?

I saw the topic projects for beginners, but it was a .dat file (which I opened using notepad 2), I don't know how to use a dat file with python, I am used to .py files.

And .html files.

Please help,

Panarchy

Recommended Answers

All 11 Replies

Welcome to DaniWeb and the interesting world of Python coding!

The Quiz.dat file is just a text file containing 6 lines per question. The first line is the correct answer code for the four possible answers (A, B, C, D), followed by the question and the four possible answers. For example ...

A
Which sport uses the term LOVE ?
Tennis
Golf
Football
Swimming
B
What is the German word for WATER ?
Wodar
Wasser
Werkip
Waski
C
What has eight bits ?
Word
ASCII
Byte
RAM
...
...

To work with it in Python, it is easiest to form a tuple/array of each question in a set order and put them in a list. I picked the order (question, answer1, answer2, answer3, answer4, answer_code). The reason I used a list of tuples is that you can shuffle them easily. You read the data file into your program as a list of text lines and then convert these to a list of the question tuples ...

[('Which sport uses the term LOVE ?', 'Tennis', 'Golf', 'Football', 'Swimming', 'A'), 
('What is the German word for WATER ?', 'Wodar', 'Wasser', 'Werkip', 'Waski', 'B'), 
('What has eight bits ?', 'Word', 'ASCII', 'Byte', 'RAM', 'C'),
...]

Here is a short Python program to handle the formation of the list of tuples ...

# read the mutliple choice quiz data file
# reorganize into a list of tuples, each tuple has this order
# (question, answer1, answer2, answer3, answer4, answer_code)
 
# read the appended text file as a list of lines
fin = open("Quiz.dat", "r")
lineList = fin.readlines()
fin.close()
 
quiz_list = []
for k, line in enumerate(lineList):
    tuple_complete = False
    line1 = line.strip()
    # build a tuple for each question
    if k % 6 == 0:
        answer_code = line1
        if answer_code == 'end':
            break
    if k % 6 == 1:
        question = line1
    if k % 6 == 2:
        answer1 = line1
    if k % 6 == 3:
        answer2 = line1
    if k % 6 == 4:
        answer3 = line1
    if k % 6 == 5:
        answer4 = line1
        tuple_complete = True
    if tuple_complete:
        tuple1 = (question, answer1, answer2, answer3, answer4, answer_code)
        print tuple1  # test
        quiz_list.append(tuple1)
 
print "-"*70
#print quiz_list  # for testing
print "-"*70
 
# shuffle the list and display the first 10 question tuples
import random
random.shuffle(quiz_list)
for k, quest in enumerate(quiz_list):
    if k < 10:
        print quest

Now its up to you to display the question, followed by the four possible answers titled A, B, C, D and ask the player to give the title letter of the correct answer. After the user gives the input, then you compare the letter with the letter of the correct answer.

Thanks for that.

What should I write into the html?

I am a bit of a noob. I have only just started learning python. Please help I don't understand this.

I am a bit of a noob. I have only just started learning python. Please help I don't understand this.

If you are that unfamiliar with Python, I would recommend to work yourself through a simple tutorial first, and then a few simple projects. The Quiz program is more of medium difficulty. You have to know about lists, tuples, random functions, file handling and so on.

Here is a good recommendation of tutorial sources posted a few days ago:
http://www.daniweb.com/techtalkforums/post363044-4.html

What dont you understand?

Editors note: This thread refers to http://www.daniweb.com/techtalkforums/post161212-13.html

Thanks anyways. I will just learn C, then C++, then Java.

Thanks anyways. I will just learn C, then C++, then Java.

You're finding difficulties with Python and "just" moving to C? Let me warn you, you're walking into dangerous territory... C isn't nearly as simple as it sounds.

Hi,

I also wanted to use other languages for a game etc that I wanted to do, so before I took on any language for what was needed I looked at how easy it would be for me to code my game in...C, C++, C#, Ruby, Perl, Java and while looking at these I accidently found Python...and thank goodness that I did! Some of these other codes can take 6 or 7 times longer to code with than Python and are 6 or 7 times more complicated to deal with! I've read where some math professors were involved in some complicated mathematical equations and dreaded using an equally complicated language like C to code it in:confused:...I've also read where people can take 7 or 8 months to code a project in say C where if they did the same thing in Python it would take only 2 weeks...so to say I'll just learn C etc like one is going to have an enjoyable steak lunch does not equate at all!

Believe me when I say that not every language is as easy to use as our beloved Python.:)

fredzik.

wat does the quiz.dat file contain

I know this thread is pretty old but I am getting this error when I try and run the python script to form the list of tuples.

  File "multiplechoice.py", line 6
    fin = open("Quiz.txt", "r")
    ^
IndentationError: unexpected indent

I am not sure what is causing this, I am programming using Aptana Studios, on a macbook pro. I tried changing the extension to .txt since mac doesn't like .dat and I can open the original file using aptana and see all the questions.
Any ideas?

Looks like you managed to put 2 spaces ahead of of line 6.
Python does not like that!

I didn't even notice that thank you.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.