2017-05-28 70 views
-2

有人可以帮助我吗?无论我穿什么号码我得到相同的答案/输出我的清单给出了相同的答案

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

请解释你希望从你的代码中得到什么样的行为。同时给出输入和输出的例子 –

+4

这是一个完全有效的代码,我猜你正在使用Python 2.x并且它会评估你的输入(例如int) - 如果是这种情况,请尝试使用改为'raw_input'。 – zwer

+0

只是跟在@zwer上,'raw_input'将任何输入转换成一个字符串,从而可以匹配列表中的字符串:_The函数然后从输入中读取一行,将其转换为string_,[source](https:/ /docs.python.org/2/library/functions.html#raw_input) – patrick

回答

0

根据该意见,你想的是,如果用户键入数字1和5之间的“一”这是打印“你向右走”。 所以items应该是一个字符串列表,而不是一个字典,也不是一个集合。列表由[]定义。 然后,最好将你的输入(例如str(input()))转换为字符串。 最后,Python中的索引从0开始不是1,因此您应该分配items[choice-1]而不是items[choice](否则如果用户选择为5,则会生成错误)。我还添加了另一个if陈述,因为items['a']对于列表没有任何意义。

其中给出:

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') 

它将如果用户写1,2,3,4,5或 'A' 返回you go right; you go left适用于所有其他情况。

+0

我的代码说这是一个未解决的参考。 – james548

+0

我仔细检查了Python 2.7.6和3.4.3。您只需将Python 3版本的'raw_input'更改为'input'即可。但我无法重现你的问题。你确定它不在你的代码的另一部分吗? – Nuageux

相关问题