python 3.2
这可能真的很愚蠢但是:
items = {'1': 'ACK', '2': 'RELQ', '3': 'COM'}
choice = input('Choose an option:\n1.ACK\n2.RELQ\n3.COM\n')
print(choice)
if choice in items:
print(choice)
option = items[choice]
else:
print('Input not recognized')
如果你输入 1 它会一直返回
1
Input not recognized
choice in items 返回 false?
这应该很简单,但我就是看不出它是什么。
更新:
print(type(choice))` returns str
print(len(choice)) returns 2
print(repr(choice)) returns '1\r'
print(choice[0]) returns 1
输入正在通过 input() 接收一个\r 换行符
请您参考如下方法:
可能它获取了换行符,所以为了让您的代码正常工作,您应该修剪 choices 变量。或者,如果您的字典键是整数而不是字符串,您可以只执行强制转换操作。
编辑: 你最后的评论证明了我的观点,因为 [49, 13] 数字 - 13 是回车的 ascii 码。
只需添加:
choice = choice.strip()
在 if choice in items 之前:
