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.
Veuillez expliquer le comportement que vous attendez de votre code. Donnez aussi des exemples d'entrée et la sortie que vous attendez –
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
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