thisduck

Al's ATBS Random Quiz Generator

Jul 11th, 2020
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.05 KB | None | 0 0
  1. #! python3
  2. # stateCapitals.py A multiple choice quiz randomizer to prevent copying
  3.  
  4. import random, os
  5. from pathlib import Path
  6.  
  7. #make a new directory to store the quiz files
  8. quizDir = Path.home() / 'American Capitals Quiz'
  9. os.makedirs(quizDir)
  10.  
  11. capitals = {'Alabama': 'Montgomery', 'Alaska': 'Juneau', 'Arizona': 'Phoenix',
  12.    'Arkansas': 'Little Rock', 'California': 'Sacramento', 'Colorado': 'Denver',
  13.    'Connecticut': 'Hartford', 'Delaware': 'Dover', 'Florida': 'Tallahassee',
  14.    'Georgia': 'Atlanta', 'Hawaii': 'Honolulu', 'Idaho': 'Boise',
  15.    'Illinois': 'Springfield', 'Indiana': 'Indianapolis', 'Iowa': 'Des Moines',
  16.    'Kansas': 'Topeka', 'Kentucky': 'Frankfort', 'Louisiana': 'Baton Rouge',
  17.    'Maine': 'Augusta', 'Maryland': 'Annapolis', 'Massachusetts': 'Boston',
  18.    'Michigan': 'Lansing', 'Minnesota': 'Saint Paul', 'Mississippi': 'Jackson',
  19.    'Missouri': 'Jefferson City', 'Montana': 'Helena', 'Nebraska': 'Lincoln',
  20.    'Nevada': 'Carson City', 'New Hampshire': 'Concord', 'New Jersey': 'Trenton',
  21.    'New Mexico': 'Santa Fe', 'New York': 'Albany', 'North Carolina': 'Raleigh',
  22.    'North Dakota': 'Bismarck', 'Ohio': 'Columbus', 'Oklahoma': 'Oklahoma City',
  23.    'Oregon': 'Salem', 'Pennsylvania': 'Harrisburg', 'Rhode Island': 'Providence',
  24.    'South Carolina': 'Columbia', 'South Dakota': 'Pierre', 'Tennessee': 'Nashville',
  25.    'Texas': 'Austin', 'Utah': 'Salt Lake City', 'Vermont': 'Montpelier',
  26.    'Virginia': 'Richmond', 'Washington': 'Olympia', 'West Virginia': 'Charleston',
  27.    'Wisconsin': 'Madison', 'Wyoming': 'Cheyenne'}
  28.  
  29. cities = list(capitals.values())
  30.  
  31. for quizNo in range(35):   #how many quizes to be generated
  32.     questionNo = 1
  33.     quizContent = open(quizDir / ("Quiz " + str(quizNo + 1) + ".txt"), 'a')
  34.     quizAnswers = open(quizDir / ("Quiz " + str(quizNo + 1) + " Answers.txt"), 'a')
  35.  
  36.     #file headers
  37.     quizContent.write("American Capital Cities Quiz\n\nName:_____________\n\nDate:____________\n\nThis quiz has 50 multiple choice questions.\n\n")
  38.     quizAnswers.write("American Capital Cities\nANSWER KEY -- QUIZ " + str(quizNo + 1) + "\n\n")
  39.  
  40.     #question loop
  41.     for k,v in capitals.items(): #make a question for each (k + v)
  42.         quizContent.write("Q" + str(questionNo) + ". What is the capital of " + k + "?\n")
  43.         choices = {v} #using a set so the other random cities cannot be the same as the correct answer
  44.         while len(choices) < 4:
  45.             try:
  46.                 choices.add(cities[random.randint(0, len(capitals))])#get a random city name from capitals
  47.             except:
  48.                 continue
  49.         cityNames = list(choices)
  50.         for i in range(len(cityNames)):
  51.             quizContent.write(f"{'abcd'[i]}. {cityNames[i]}\n")
  52.             if v == cityNames[i]:
  53.                 quizAnswers.write(f"Q{str(questionNo)}. ANSWER {'abcd'[i]}\n")
  54.             else:
  55.                 pass
  56.         quizContent.write("\n")
  57.         questionNo += 1
  58.  
  59.     #close up files
  60.     quizAnswers.close()
  61.     quizContent.write("\nEnd of quiz. Take this to your teacher.\n\nMARK ____/50")
  62.     quizContent.close()
Add Comment
Please, Sign In to add comment