Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! python3
- # stateCapitals.py A multiple choice quiz randomizer to prevent copying
- import random, os
- from pathlib import Path
- #make a new directory to store the quiz files
- quizDir = Path.home() / 'American Capitals Quiz'
- os.makedirs(quizDir)
- 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': 'Cheyenne'}
- cities = list(capitals.values())
- for quizNo in range(35): #how many quizes to be generated
- questionNo = 1
- quizContent = open(quizDir / ("Quiz " + str(quizNo + 1) + ".txt"), 'a')
- quizAnswers = open(quizDir / ("Quiz " + str(quizNo + 1) + " Answers.txt"), 'a')
- #file headers
- quizContent.write("American Capital Cities Quiz\n\nName:_____________\n\nDate:____________\n\nThis quiz has 50 multiple choice questions.\n\n")
- quizAnswers.write("American Capital Cities\nANSWER KEY -- QUIZ " + str(quizNo + 1) + "\n\n")
- #question loop
- for k,v in capitals.items(): #make a question for each (k + v)
- quizContent.write("Q" + str(questionNo) + ". What is the capital of " + k + "?\n")
- choices = {v} #using a set so the other random cities cannot be the same as the correct answer
- while len(choices) < 4:
- try:
- choices.add(cities[random.randint(0, len(capitals))])#get a random city name from capitals
- except:
- continue
- cityNames = list(choices)
- for i in range(len(cityNames)):
- quizContent.write(f"{'abcd'[i]}. {cityNames[i]}\n")
- if v == cityNames[i]:
- quizAnswers.write(f"Q{str(questionNo)}. ANSWER {'abcd'[i]}\n")
- else:
- pass
- quizContent.write("\n")
- questionNo += 1
- #close up files
- quizAnswers.close()
- quizContent.write("\nEnd of quiz. Take this to your teacher.\n\nMARK ____/50")
- quizContent.close()
Add Comment
Please, Sign In to add comment