2017-05-28 2 views
-2

Quelqu'un pourrait-il m'aider? Peu importe quel numéro je mets je reçois la même réponse/sortieMa liste donne la même réponse

items = {'1': '2', '3': '4', '5': 'a'} 
choice = input("Select a number: ") 
if choice in items: 
    the_choice = items[choice] 
    print('you go right') 
else: 
    print('you go left') 
+2

Veuillez expliquer le comportement que vous attendez de votre code. Donnez aussi des exemples d'entrée et la sortie que vous attendez –

+4

C'est un code parfaitement valide, je suppose que vous utilisez Python 2.x et il évalue votre entrée (dans un int, par exemple) - si c'est le cas, essayez d'utiliser 'raw_input' à la place. – zwer

+0

juste après @zwer, 'raw_input' convertit n'importe quelle entrée en une chaîne, et peut donc correspondre aux chaînes de votre liste: _La fonction lit alors une ligne depuis l'entrée, la convertit en chaîne_, [source] (https://docs.python.org/2/library/functions.html#raw_input) – patrick

Répondre

0

Selon le commentaire, vous voulez que si l'utilisateur tape un nombre compris entre 1 et 5 ou « un », il est imprimé « vous allez à droite ». Donc items devrait être une liste de chaînes, pas un dictionnaire ni un ensemble. Les listes sont définies par []. Ensuite, il est toujours préférable de lancer vos entrées (str(input()) pour lancer une chaîne par exemple). Enfin, les index en Python commencent à 0 et non à 1, par conséquent vous devez affecter items[choice-1] au lieu de items[choice] (sinon cela génèrerait une erreur si le choix de l'utilisateur est 5). J'ai également ajouté une autre if déclarations que items['a'] ne signifie rien pour une liste.

Ce qui donne:

items = ['1', '2', '3', '4', '5', 'a'] 
choice = str(raw_input("Select a number: ")) 
if choice in items: 
    if choice is not 'a': 
     the_choice = items[int(choice)-1] 
    print('you go right') 
else: 
    print('you go left') 

Il retournera you go right si l'utilisateur écrit 1,2,3,4,5 ou 'un'; you go left pour tous les autres cas.

+0

Mon code dit que c'est une référence non résolue. – james548

+0

Je revérifie avec Python 2.7.6 et 3.4.3. Il suffit de changer 'raw_input' en' input' pour les versions de Python 3. Mais je ne peux pas reproduire votre problème. Êtes-vous sûr que ce n'est pas dans une autre partie de votre code? – Nuageux