Here is the Python program:
import random  #  to generate random numbers
def quiz(): Â #method quiz to ask state's capital
  capitals={"Washington":"Olympia","Oregon":"Salem",\
          "California":"Sacramento","Ohio":"Columbus",\
          "Nebraska":"Lincoln","Colorado":"Denver",\
          "Michigan":"Lansing","Massachusetts":"Boston",\
          "Florida":"Tallahassee","Texas":"Austin",\
          "Oklahoma":"Oklahoma City","Hawaii":"Honolulu",\
          "Alaska":"Juneau","Utah":"Salt Lake City",\
          "New Mexico":"Santa Fe","North Dakota":"Bismarck",\
          "South Dakota":"Pierre","West Virginia":"Charleston",\
          "Virginia":"Richmond","New Jersey":"Trenton",\
          "Minnesota":"Saint Paul","Illinois":"Springfield",\
          "Indiana":"Indianapolis","Kentucky":"Frankfort",\
          "Tennessee":"Nashville","Georgia":"Atlanta",\
          "Alabama":"Montgomery","Mississippi":"Jackson",\
          "North Carolina":"Raleigh","South Carolina":"Columbia",\
          "Maine":"Augusta","Vermont":"Montpelier",\
          "New Hampshire":"Concord","Connecticut":"Hartford",\
          "Rhode Island":"Providence","Wyoming":"Cheyenne",\
          "Montana":"Helena","Kansas":"Topeka",\
          "Iowa":"Des Moines","Pennsylvania":"Harrisburg",\
          "Maryland":"Annapolis","Missouri":"Jefferson City",\
          "Arizona":"Phoenix","Nevada":"Carson City",\
          "New York":"Albany","Wisconsin":"Madison",\
          "Delaware":"Dover","Idaho":"Boise",\
          "Arkansas":"Little Rock","Louisiana":"Baton Rouge"}
#dictionary of states along with their capitals  Â
  quit=False  #exit option
  print ("Welcome to the States capitals quiz game!") Â
  wrong_ans = False  # boolean variable for incorrect answer
  while not quit and len(capitals)>0: Â
#loop continues until all state capitals are finished and user presses q
    choice = random.choice(list(capitals.keys())) Â
#choice variable stores randomly generated list of pick
    right_ans = capitals.get(choice)  #stores correct answer
    print ("\nWhat is the capital city of",choice,"?")
    user_ans = input("Your guess:  ")  #answer entered by user
    if user_ans.lower()=='q':  #if user presses q to quit
      quit=True  #quit value become true
      print("The quiz is over! Bubye!") Â
#displays the above message and quits the program
    elif user_ans.lower()==right_ans.lower():  #if user enters correct guess
      print ("Right Answer! \n")  # displays this message
    else:  #if user enters wrong guess
      print ("Wrong Answer!\n")  #displays wrong answer message
      print ("The right answer is ",right_ans)  #prints right capital
      wrong_ans = True     Â
quiz() Â Â Â #calls quiz function to begin with the quiz
Explanation:
The program has a dictionary that contains the US states as keys and their capitals as values. The program asks the user to enter the capital of a random state. This state is selected randomly from the list of states using random function and keys() method is used to display list of all keys in the capital states dictionary. The while loop starts which keeps asking the user to guess the capital of states. This loop ends when the user types q to quit the program or all the capitals of the states are covered. Now the user guess is compared to the right answer, if the user has correctly guessed the capital then the Right answer message is displayed otherwise Wrong answer is displayed. After Wrong answer message the correct answer  is displayed and the quiz starts again until the user enters q to exit. When the user types q the message: The quiz is over! Bubye! is displayed and the programs exits.