我正在尝试使用带有覆盆子pi的扫描仪连接的条形码字典来编程循环,它只允许将某些数字放在字典中。 示例代码不起作用:
variable = dict()
variable[0425872013] = 200
while True:
print('ready to scan next item')
buffer = input('->')
print(variable[buffer])
它会继续弹出一个带有变量号的无效标记。我已经尝试将它们作为字符串放入,当条形码输入数字时它不会注册它们。
答案 0 :(得分:1)
您将键指定为整数,但您将键指定为字符串。所以试试这个:
print(variable[int(buffer)])
答案 1 :(得分:0)
请注意,您已将密钥设置为整数。如果您使用的是Python 2,则应使用raw_input()
输入,这使其成为字符串。
如果它是Python 3,而input()是正确的,你仍然得到一个字符串而不是一个整数。
输入([提示])
如果存在prompt参数,则将其写入标准输出 没有尾随换行符。然后该函数从中读取一行 输入,将其转换为字符串(剥离尾随换行符),以及 返回。
您应该将密钥设为字符串'0425872013'
或将输入缓冲区转换为整数(检查它是否为有效的整数条目)myinput = int(raw_input())
请注意,整数值045在Python 3中是非法的,因为Python 2将其视为八进制值(Python 3中为0o45)。
答案 2 :(得分:0)
您需要将条形码作为字符串放入字典中,并使用raw_input()
代替input()
。无效令牌错误来自数字文字,因为前导零允许Python将其解析为八进制数而不是十进制数,并且该数字包含八进制数中不允许的数字。