Python3 Dictionnaire itérer à travers les valeurs?
Salut tout le monde je suis en train d'écrire un programme en Python qui agit comme un jeu de quiz. J'ai fait un dictionnaire au début du programme qui contient les valeurs que l'utilisateur sera questionné sur. Il est réglé comme suit:
PIX0 = {"QVGA":"320x240", "VGA":"640x480", "SVGA":"800x600"}
J'ai donc défini une fonction qui utilise une for
de la boucle pour parcourir le dictionnaire des clés et demande l'entrée de l'utilisateur, et la compare à l'entrée de l'utilisateur à la valeur trouvé la clé.
for key in PIX0:
NUM = input("What is the Resolution of %s?" % key)
if NUM == PIX0[key]:
print ("Nice Job!")
count = count + 1
else:
print("I'm sorry but thats wrong. The correct answer was: %s." % PIX0[key] )
Cela fonctionne bien sortie ressemble à ceci:
What is the Resolution of Full HD? 1920x1080
Nice Job!
What is the Resolution of VGA? 640x480
Nice Job!
Donc ce que je voudrais être capable de faire une fonction qui pose la question dans l'autre sens, fournissant à l'utilisateur la résolution de numéros et d'avoir à l'utilisateur d'entrer le nom de l'affichage standard. Je tiens donc à faire une boucle for mais je ne sais pas vraiment comment (ou même si vous le pouvez) effectuer une itération sur les valeurs dans le dictionnaire et de demander à l'utilisateur de saisir les clés.
J'aimerais avoir une sortie qui ressemble à quelque chose comme ceci:
Which standard has a resolution of 1920x1080? Full HD
Nice Job!
What standard has a resolution of 640x480? VGA
Nice Job!
J'ai essayé de jouer avec for value in PIX0.values()
et c'est ce qui m'a permis de parcourir le dictionnaire des valeurs, mais je ne sais pas comment l'utiliser pour "vérifier" l'utilisateur répond à l'encontre de l'clés de dictionnaire. Si quelqu'un pouvait l'aider, il serait apprécié.
EDIT: Désolé, je suis en utilisant Python3.
source d'informationauteur Ben Williams
Vous devez vous connecter pour publier un commentaire.
Selon votre version:
Python 2.x:
Python 3.x:
Vous devez également prendre l'habitude de l'utilisation de la nouvelle chaîne de mise en forme de la syntaxe (
{}
au lieu de%
opérateur) à partir de PEP 3101:https://www.python.org/dev/peps/pep-3101/
Vous pouvez rechercher la clé correspondante ou "d'inverser" le dictionnaire, mais vu comment vous l'utilisez, il serait mieux si vous venez de parcourir clé/valeur paires en premier lieu, que vous pouvez faire avec
items()
. Ensuite, vous avez à la fois directement dans des variables et n'ont pas besoin d'une recherche à tous:Vous pouvez bien sûr utiliser que les deux moyens, alors.
Ou si vous n'avez pas réellement besoin du dictionnaire pour quelque chose d'autre, vous pouvez abandonner le dictionnaire et ont une banale liste de paires.
Vous pouvez simplement regarder la valeur qui correspond à la touche, puis vérifiez si l'entrée est égale à la clé.
Aussi, vous devrez modifier la dernière ligne de l'ajustement, de sorte qu'il imprime la clé au lieu de la valeur, si vous obtenez une réponse incorrecte.
Aussi, je vous conseille d'utiliser
str.format
pour la mise en forme de chaîne au lieu de la%
de la syntaxe.Complète de votre code devrait ressembler à ceci (après l'ajout dans la mise en forme de chaîne)
Si tous vos valeurs sont uniques, vous pouvez faire une marche arrière dictionnaire:
Résultat:
Maintenant, vous pouvez utiliser la même logique qu'avant.
Créer le contraire de dictionnaire:
Puis exécuter le même code sur ce dictionnaire à la place (à l'aide de
PIX1
au lieu dePIX0
).BTW, je ne suis pas sûr à propos de Python 3, mais en Python 2, vous devez utiliser
raw_input
au lieu deinput
.