#! /usr/bin/env python3
# randomQuizGenerator.py - Creates quizess wtih questions and answers in
# random order, along with the answer key.

import random

# The quiz data. Keys are states and values are their capitals.
capitals = {'Alabama':'Montgomery', 'Alaska':'Juneau', 'Arizona':'Phoenix',
'Arkansas':'Little Rock','California':'Sacramento','Colorado':'Denver',
'Connecticut':'Hartford','Delaware':'Dover','Florida':'Tallahassee',
'Georgia':'Atlanta','Hawaii':'Honolulu','Idaho':'Boise','Illinois':'Springfield',
'Indiana':'Indianapolis','Iowa':'Des Moines','Kansas':'Topeka','Kentucky':
'Frankfort','Louisiana':'Baton Rouge','Maine':'Augusta','Maryland':'Annapolis',
'Massachusetts':'Boston','Michigan':'Lansing','Minnesota':'Saint Paul',
'Mississippi':'Jackson', 'Missouri':'Jefferson City','Montana':'Helena',
'Nebraska':'Lincoln','Nevada':'Carson City','New Hampshire':'Concord',
'New Jersey':'Trenton','New Mexico':'Santa Fe','New York':'Albany',
'North Carolina':'Raleigh','North Dakota':'Bismarck','Ohio':'Columbus',
'Oklahoma':'Oklahoma City','Oregon':'Salem','Pennsylvania':'Harrisburg',
'Rhode Island':'Providence','South Carolina':'Columbia','South Dakota':'Pierre',
'Tennessee':'Nashville','Texas':'Austin','Utah':'Salt Lake City','Vermont':
'Montpelier','Virginia':'Richmond','Washington':'Olympia','West Virginia':
'Charleston','Wisconsin':'Madison','Wyoming':'Cheynne'}

# Generate 35 quiz files.

for quizNum in range(35):
    # Create the quiz and answer key files.
    quizFile = open('capitalsquiz%s.txt' % (quizNum + 1),'w')
    answerKeyFile = open('capitalsquiz_answers%s.txt' % (quizNum + 1), 'w')

    # Write out the header for the quiz.
    quizFile.write('Name:\n\nDate:\n\nPeriod:\n\n')
    quizFile.write((' ' * 20) + 'State Capitals Quiz (Form %s)' % (quizNum + 1))
    quizFile.write('\n\n')

    # Shuffle the order of the states.
    states = list(capitals.keys())
    random.shuffle(states)

    # Loop through all 50 states, making a question for each.
    for questionNum in range(50):

        # Get right and wrong answers.
        correctAnswer = capitals[states[questionNum]]
        wrongAnswers = list(capitals.values())
        del wrongAnswers[wrongAnswers.index(correctAnswer)]
        wrongAnswers = random.sample(wrongAnswers, 3)
        answerOptions = wrongAnswers + [correctAnswer] # Can only concatenate a list to a list so [] is needed
        random.shuffle(answerOptions) # shuffle otherwise the answer is always the last one – 'D'

        # Write the question and answer options to the quiz file.
        quizFile.write('%s. What is the capital of %s?\n' % (questionNum + 1, states[questionNum]))
        for i in range(4):
            quizFile.write('    %s. %s\n' % ('ABCD'[i], answerOptions[i]))
        quizFile.write('\n')

        # Write the answer key to a file.
        answerKeyFile.write('%s. %s\n' % (questionNum + 1, 'ABCD'[answerOptions.index(correctAnswer)]))
quizFile.close()
answerKeyFile.close()

#! /usr/bin/env python3
# randomQuizGenerator.py - Creates quizess wtih questions and answers in
# random order, along with the answer key.

import random

# The quiz data. Keys are states and values are their capitals.
capitals = {'Alabama':'Montgomery', 'Alaska':'Juneau', 'Arizona':'Phoenix',
'Arkansas':'Little Rock','California':'Sacramento','Colorado':'Denver',
'Connecticut':'Hartford','Delaware':'Dover','Florida':'Tallahassee',
'Georgia':'Atlanta','Hawaii':'Honolulu','Idaho':'Boise','Illinois':'Springfield',
'Indiana':'Indianapolis','Iowa':'Des Moines','Kansas':'Topeka','Kentucky':
'Frankfort','Louisiana':'Baton Rouge','Maine':'Augusta','Maryland':'Annapolis',
'Massachusetts':'Boston','Michigan':'Lansing','Minnesota':'Saint Paul',
'Mississippi':'Jackson', 'Missouri':'Jefferson City','Montana':'Helena',
'Nebraska':'Lincoln','Nevada':'Carson City','New Hampshire':'Concord',
'New Jersey':'Trenton','New Mexico':'Santa Fe','New York':'Albany',
'North Carolina':'Raleigh','North Dakota':'Bismarck','Ohio':'Columbus',
'Oklahoma':'Oklahoma City','Oregon':'Salem','Pennsylvania':'Harrisburg',
'Rhode Island':'Providence','South Carolina':'Columbia','South Dakota':'Pierre',
'Tennessee':'Nashville','Texas':'Austin','Utah':'Salt Lake City','Vermont':
'Montpelier','Virginia':'Richmond','Washington':'Olympia','West Virginia':
'Charleston','Wisconsin':'Madison','Wyoming':'Cheynne'}

# Generate 35 quiz files.

for quizNum in range(35):
    # Create the quiz and answer key files.
    quizFile = open('capitalsquiz%s.txt' % (quizNum + 1),'w')
    answerKeyFile = open('capitalsquiz_answers%s.txt' % (quizNum + 1), 'w')

    # Write out the header for the quiz.
    quizFile.write('Name:\n\nDate:\n\nPeriod:\n\n')
    quizFile.write((' ' * 20) + 'State Capitals Quiz (Form %s)' % (quizNum + 1))
    quizFile.write('\n\n')

    # Shuffle the order of the states.
    states = list(capitals.keys())
    random.shuffle(states)

    # Loop through all 50 states, making a question for each.
    for questionNum in range(50):

        # Get right and wrong answers.
        correctAnswer = capitals[states[questionNum]]
        wrongAnswers = list(capitals.values())
        del wrongAnswers[wrongAnswers.index(correctAnswer)]
        wrongAnswers = random.sample(wrongAnswers, 3)
        answerOptions = wrongAnswers + [correctAnswer] # Can only concatenate a list to a list so [] is needed
        random.shuffle(answerOptions) # shuffle otherwise the answer is always the last one – 'D'

        # Write the question and answer options to the quiz file.
        quizFile.write('%s. What is the capital of %s?\n' % (questionNum + 1, states[questionNum]))
        for i in range(4):
            quizFile.write('    %s. %s\n' % ('ABCD'[i], answerOptions[i]))
        quizFile.write('\n')

        # Write the answer key to a file.
        answerKeyFile.write('%s. %s\n' % (questionNum + 1, 'ABCD'[answerOptions.index(correctAnswer)]))
quizFile.close()
answerKeyFile.close()

#! /usr/bin/env python3 # randomQuizGenerator.py - Creates quizess wtih questions and answers in # random order, along with the answer key. # The quiz data. Keys are states and values are their capitals. # Generate 35 quiz files. # Create the quiz and answer key files. # Write out the header for the quiz. # Shuffle the order of the states. # Loop through all 50 states, making a question for each. # Get right and wrong answers. # Can only concatenate a list to a list so [] is needed # shuffle otherwise the answer is always the last one – 'D' # Write the question and answer options to the quiz file. # Write the answer key to a file.