Python无效令牌

时间:2016-02-23 21:04:36

标签: python

我正在尝试使用带有覆盆子pi的扫描仪连接的条形码字典来编程循环,它只允许将某些数字放在字典中。 示例代码不起作用:

variable = dict() 
variable[0425872013] = 200 

while True: 

    print('ready to scan next item') 
    buffer = input('->') 

print(variable[buffer]) 

它会继续弹出一个带有变量号的无效标记。我已经尝试将它们作为字符串放入,当条形码输入数字时它不会注册它们。

3 个答案:

答案 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将其解析为八进制数而不是十进制数,并且该数字包含八进制数中不允许的数字。