ZBUDNIEWEK. JAKUB wrote: > I'm a newbie, but was able to tune it to correctly reply to user inputs.
> 2. Why (on Windows) do I have to give inputs in quotes not to cause an > error (for ll input the error is ' NameError: name 'll' is not defined')? If you are running the script under Python 2 you should use raw_input() instead of input(). input() will take the user input and also run eval() on it: Python 2.7.6 (default, Mar 22 2014, 22:59:56) [GCC 4.8.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> input("? ") ? 1 + 1 2 >>> raw_input("? ") ? 1 + 1 '1 + 1' Python 3 has no raw_input() and input() will behave like raw_input() in Python 2. > 1. My question is can it be optimized in any way? In Python 2 capital.keys() builds a list. You can avoid that by iterating over the dict directly: for k in capitals: ... Not an optimization, but if the user enters neither Y nor N you might ask again instead of assuming Y. > def main(): > > right = 0 > wrong = 0 > 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'} > > for k in capitals.keys(): > state = input('Enter the capital of '+k+' :') > if state.upper() == capitals[k].upper(): > right += 1 > print('Correct') > else: > wrong += 1 > print('Incorrect') > choice = input('Do you want to play again y/n: ') > if choice.upper() == 'N': > print('end of game') > break > elif choice.upper() != 'Y': > print("invalid choice") > > print('Number of correct answers is: ', right) > print("Number of incorrect answers is:", wrong) > > main() > > Regards, > Jakub _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor