Capital Quiz

\[ \begin{align}\begin{aligned}\newcommand\blank{~\underline{\hspace{1.2cm}}~}\\% Bold symbols (vectors) \newcommand\bs[1]{\mathbf{#1}}\\% Poor man's siunitx \newcommand\unit[1]{\mathrm{#1}} \newcommand\num[1]{#1} \newcommand\qty[2]{#1~\unit{#2}}\\\newcommand\per{/} \newcommand\squared{{}^2} % % Scale \newcommand\milli{\unit{m}} \newcommand\centi{\unit{c}} \newcommand\kilo{\unit{k}} \newcommand\mega{\unit{M}} % % Angle \newcommand\radian{\unit{rad}} \newcommand\degree{\unit{{}^\circ}} % % Time \newcommand\second{\unit{s}} % % Distance \newcommand\meter{\unit{m}} \newcommand\m{\meter} \newcommand\inch{\unit{in}} \newcommand\feet{\unit{ft}} \newcommand\mile{\unit{mi}} \newcommand\mi{\mile} % % Volume \newcommand\gallon{\unit{gal}} % % Mass \newcommand\gram{\unit{g}} \newcommand\g{\gram} % % Frequency \newcommand\hertz{\unit{Hz}} \newcommand\rpm{\unit{rpm}} % % Voltage \newcommand\volt{\unit{V}} \newcommand\V{\volt} \newcommand\millivolt{\milli\volt} \newcommand\mV{\milli\volt} \newcommand\kilovolt{\kilo\volt} \newcommand\kV{\kilo\volt} % % Current \newcommand\ampere{\unit{A}} \newcommand\A{\ampere} \newcommand\milliampereA{\milli\ampere} \newcommand\mA{\milli\ampere} \newcommand\kiloampereA{\kilo\ampere} \newcommand\kA{\kilo\ampere} % % Resistance \newcommand\ohm{\Omega} \newcommand\milliohm{\milli\ohm} \newcommand\kiloohm{\kilo\ohm} % correct SI spelling \newcommand\kilohm{\kilo\ohm} % "American" spelling used in siunitx \newcommand\megaohm{\mega\ohm} % correct SI spelling \newcommand\megohm{\mega\ohm} % "American" spelling used in siunitx % % Inductance \newcommand\henry{\unit{H}} \newcommand\H{\henry} \newcommand\millihenry{\milli\henry} \newcommand\mH{\milli\henry} % % Temperature \newcommand\celsius{\unit{^{\circ}C}} \newcommand\C{\unit{\celsius}} \newcommand\fahrenheit{\unit{^{\circ}F}} \newcommand\F{\unit{\fahrenheit}} \newcommand\kelvin{\unit{\K}} \newcommand\K{\unit{\kelvin}}\\% Power \newcommand\watt{\unit{W}} \newcommand\W{\watt} \newcommand\milliwatt{\milli\watt} \newcommand\mW{\milli\watt} \newcommand\kilowatt{\kilo\watt} \newcommand\kW{\kilo\watt} % % Torque \newcommand\ozin{\unit{oz}\text{-}\unit{in}} \newcommand\newtonmeter{\unit{N\text{-}m}}\end{aligned}\end{align} \]

Apr 16, 2025 | 333 words | 3 min read

9.2.1. Capital Quiz#

Instructions#

Write a function named get_state_data that loads state capital data from the provided file state_capitals.txt. The function should then return this data as a dictionary with the state names as keys and the state capitals as values. Your program may assume that the state names are unique, but must not assume that the state capital names are unique.

Then write the main function of this program so that it will quiz the user by asking them to enter the capital for a particular state. The states should be asked in a randomized order and the answers should not be case-sensitive. If the user answers correctly, that state should not be asked again, but if the user answers incorrectly, that state should be added to the end of the quiz so that it will be asked again. In this way, states should be asked as many times as necessary for the user to answer correctly. The program ends after all the state capitals have been entered correctly, or the user enters ‘0’. The program should also keep track of the number of correct and incorrect responses, and at the end of the quiz it should report how many questions were answered correctly and how many in total were asked.

Sample Output#

Test your program by attempting at least 10 quiz questions. Be sure to include both correct and incorrect responses and a response of ‘0’.

Use the values in Table 9.1 below to test your program.

Table 9.1 Test Cases#

Case

User Input

1

0

2

Annapolis, Cheyenne, Jackson, Lincoln, Honolulu, Atlanta, Frankfort, Sacramento, Lansing, Pappy’s Purple, 0

Ensure your program’s output matches the provided samples exactly. This includes all characters, white space, and punctuation. In the samples, user input is highlighted like this for clarity, but your program should not highlight user input in this way.

Case 1 Sample Output

$ python3 capital_quiz_login.py What is the capital of South Carolina (enter 0 to quit)? 0 You didn't answer any questions.

Case 2 Sample Output

$ python3 capital_quiz_login.py What is the capital of Maryland (enter 0 to quit)? Annapolis That is correct! What is the capital of Alaska (enter 0 to quit)? Cheyenne That is incorrect. The capital of Alaska is Juneau. What is the capital of Mississippi (enter 0 to quit)? Jackson That is correct! What is the capital of Nebraska (enter 0 to quit)? Lincoln That is correct! What is the capital of Hawaii (enter 0 to quit)? Honolulu That is correct! What is the capital of Georgia (enter 0 to quit)? Atlanta That is correct! What is the capital of Kentucky (enter 0 to quit)? Frankfort That is correct! What is the capital of California (enter 0 to quit)? Sacramento That is correct! What is the capital of Michigan (enter 0 to quit)? Lansing That is correct! What is the capital of Wyoming (enter 0 to quit)? Pappy's Purple That is incorrect. The capital of Wyoming is Cheyenne. What is the capital of Rhode Island (enter 0 to quit)? 0 You answered 80.0% of the questions correctly.

Deliverables#

Save your finished program as capital_quiz_login.py, replacing login with your Purdue login. Then submit it along with all the deliverables listed in Table 9.2 below.

Table 9.2 Deliverables#

Deliverable

Description

capital_quiz_login.py

Your finished program.

Screenshot(s)

PNG(s) capturing both test cases.