10/14/2015 - 8:02 PM

Randomly generate a Jeopardy!® style quiz

Randomly generate a Jeopardy!® style quiz

#! python2
# -*- coding: cp1252 -*-
# randomQuizGenerator-Jeopardy.py - Creates quizzes with questions and answer in
# random order, along with the answer key

import random

#The number of quizes to generate
quizzQty = 1

#The quiz data; keys are questions and values are answers
quizQuestions = {"The work's reflection of your attitude to your subject will come out as mood or this other 4-letter word": "tone",
                 "Wish I had a nickel for every time I've told authors to avoid this type of expression; it's from the French for \"stereotype\"": "cliché",
                 "From the Greek for \"first competitor\", it's your leading character": "protagonist",
                 "You can't have much character development without it; \"of interest\" is another type": "conflict",
                 "Try to inspire this release of emotions like fear or pity, a term used by Aristotle": "catharsis",
                 "It can mean \"full of life\", or describe characters like Rocky & Bullwinkle": "animated",
                 "Above 66 degrees 33 minutes north latitude": "Arctic",
                 "Done without thinking or shifting": "automatic",
                 "Smelly, but in a good way": "aromatic",
                 "Los Angeles is classified as \"semi-\" this condition of little rain": "arid",
                 "In 1604 King James I called this plant \"dangerous to the lungs\"": "tobacco",
                 "There are 4 varieties of this deadly African venomous snake, 3 green & 1 black": "a mamba",
                 "This swimming superstar made many a movie right here at Sony studios, including 1953's \"Dangerous When Wet\"": "Esther Williams",
                 "Madame de Merteuil must flee after Parisians learn of her machinations in this 1782 novel": "Les Liaisons dangereuses\n    (or Dangerous Liaisons)",
                 "This stormy point at the bottom of South America has a monument dedicated in 1992 to sailors lost trying to round it": "Cape Horn",
                 "\"Insanely great\" was how Steve described this breakthrough computer when it was introduced in 1984": "Macintosh",
                 "Steve Jobs started his oft-quoted 2005 commencement at this Cal. univ. by telling why he dropped out of Reed College": "Stanford",
                 "Steve Jobs joined this other Steve in 1976 to design the logic board that would become known as Apple I": "Wozniak",
                 "After rejoining Apple in 1997, Jobs engineered this 2-word ad campaign that opposed a lockstep mentality": "\"Think Different\"",
                 "In the 1980s Jobs began NeXT company with help from this Texas entrepreneur & future presidential candidate": "Ross Perot",
                 "It's defined as the period between sunset & sunrise": "night",
                 "This sweet word can precede suckle, dew & moon": "honey",
                 "To kick back, or the title of a 1985 hit by Frankie goes to Hollywood": "relax",
                 "Musical instrument whose name is Hindi for \"3-stringed\", tho it actually has more": "sitar",
                 "Salix babylonica is commonly called this due to its drooping leaves & branches": "a weeping willow"

#The number of questions to generate per quiz
questionCount = len(quizQuestions)/2

#Generate a quiz question for each question.
for quizNum in range(quizzQty):
    #Create the quiz and answer key files.
    quizFile = open('quiz%s.txt' % (quizNum + 1), 'w')
    answerKeyFile = open('quiz_answers%s.txt' % (quizNum + 1), 'w')

    #Write out a header for the quiz
    quizFile.write((' '*20) + 'Jeopardy Quiz (Form %s)' % (quizNum + 1))

    #Shuffle the order of the Questions
    questions = list(quizQuestions.keys())

    #Loop through all states, making a question for each
    for questionNum in range(questionCount):
        #Get right and wrong answers
        correctAnswer = quizQuestions[questions[questionNum]]
        wrongAnswers = list(quizQuestions.values())
        del wrongAnswers[wrongAnswers.index(correctAnswer)]
        wrongAnswers = random.sample(wrongAnswers, 4)
        answerOptions = wrongAnswers + [correctAnswer]

        #Write the question and the answer options to the quiz file.
        quizFile.write('%s. %s?\n' % (questionNum + 1, questions[questionNum]))
        for i in range(5):
            quizFile.write('\t%s. %s\n' % ('ABCDE'[i], answerOptions[i]))


        #Write the answer key to a file
        answerKeyFile.write('%s. %s\n' % (questionNum + 1,

    #Close out the files