2017-04-23 2 views
0

J'ai 50 états et capitales. Le jeu est l'endroit où l'utilisateur reçoit les 50 états dans un ordre aléatoire et doit entrer la capitale correcte pour chaque état.Python: using raw_input vérifiant si la réponse est dans le dictionnaire

Je veux créer un dictionnaire avec tous les états et majuscules, mais je ne sais pas comment faire vérifier le programme si l'utilisateur met dans la bonne capitale.

# Game Start 
import random 
states = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota', 'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island', 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming'] 
random.shuffle(states) 
for state in states: 
    answer = raw_input ("%s" % state) 

# DICTIONARY 
Dict = {'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':Sante_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} 

Comment vérifier si la réponse est dans le dictionnaire? En outre, python me dit que le nom « Dict » ne se définit pas

+0

'réponse == Dict [état]' En outre, définir 'Dict' au début; probablement proche de la définition 'states'. – frederick99

+0

http://stackoverflow.com/a/8090402/5985593 Aussi, si l'erreur persiste que 'Dict' n'est pas défini, essayez peut-être un nom comme new_dict = {...} ou plus. Il est possible que Dict soit un mot-clé en python. Je ne suis pas sûr de celui-là. – JC97

+0

@ JC97 'dict' est un mot-clé, pas' Dict'. :) – frederick99

Répondre

2

Vous pouvez faire quelque chose comme ceci:.

import random 

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':'Sante_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'} 
states = list(capitals.keys()) 

random.shuffle(states) 
for state in states: 
    answer = raw_input("%s" % state) 
    if answer == capitals[state]: 
     print 'Correct!' 
    else: 
     print 'Wrong!' 
0
#Game Start 
import random 
states = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota', 'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island', 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming'] 


###DICTIONARY: Should be defined before you use it 
Dict = {'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':Sante_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} 

random.shuffle(states) 
for state in states: 
    answer = raw_input ("%s" % state) 
    if Dict[state] == answer: 
     pass # Do something in case of right answer 
    else: 
     pass # what do you want in case of wrong answer 
0

J'ai eu celui testé et il fonctionne très bien, mais il est en Python 3, vous aurez donc besoin de faire quelques ajustements mineurs.

import random 

states =['Alabama', 'Alaska', 'Arizona'] 
random.shuffle(states) 

# dictionary need to be stated beforehand to check the input 
# use '' for the state capital 
state_dict = {'Alabama':'Montgomery', 'Alaska':'Juneau', 'Arizona':'Phoenix'} 

for state in states: 
    answer = input("%s " %state) 
    if answer==(state_dict[state]): 
     print ("Correct") 
    else : 
     print ("False") 
+0

Pourquoi utiliser une liste séparée? Pourquoi ne pas simplement utiliser state_dict.keys()? – MaxNoe

+0

@MaxNoe cause de ce que j'ai lu, il/elle voulait qu'il soit mélangé, et vous ne pouvez pas mélanger un dictionnaire sans faire une nouvelle liste. Source: http://stackoverflow.com/questions/19895028/randomly-shuffling-a-dictionary-in-python – Waristea

+0

Voir ma réponse;) – MaxNoe

0

pour éviter de garder double livre, vous pouvez utiliser random.sample sur les articles du dictionnaire.

Il est aussi beaucoup plus pythonique, parce que vous faites boucle directement sur clé et la valeur et ne faites pas une boucle sur une clé et une recherche:

import random 

state_capitols = { 
    'Alabama': 'Montgomery', 
    'Alaska': 'Juneau', 
    'Arizona': 'Phoenix', 
} 

for state, capitol in random.sample(state_capitols.items(), len(state_capitols)): 
    answer = input('What is the capitol of {}? '.format(state)) 

    if answer == capitol: 
     print('Correct!') 
    else: 
     print('Wrong!')