Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中输入并存储一个以0(零)开头的数字?_Python_Python 2.x_Zero_Octal - Fatal编程技术网

在Python中输入并存储一个以0(零)开头的数字?

在Python中输入并存储一个以0(零)开头的数字?,python,python-2.x,zero,octal,Python,Python 2.x,Zero,Octal,我正在做一个简单的Python2学生出勤计划。我使用的是一个HID扫描仪,它就像一个键盘。每个学生ID上都有一个条形码,上面有他们的ID号。不幸的是,ID号以零开始,所以扫描器产生的值是零。一旦扫描发生,就会产生无效令牌错误,因为Python认为它是一个八进制数,序列中的一些数字是8和9 我现在测试的简单代码是: def Main(): while(loop == True): scan = input('Please scan your ID: ') d

我正在做一个简单的Python2学生出勤计划。我使用的是一个HID扫描仪,它就像一个键盘。每个学生ID上都有一个条形码,上面有他们的ID号。不幸的是,ID号以零开始,所以扫描器产生的值是零。一旦扫描发生,就会产生无效令牌错误,因为Python认为它是一个八进制数,序列中的一些数字是8和9

我现在测试的简单代码是:

def Main():
    while(loop == True):
        scan = input('Please scan your ID: ')
        dateTime = time.strftime('%I:%M:%S   %d/%m/%y')
        print(dateTime)
        print(scan)
编辑:错误为:

============== RESTART: /home/pi/Desktop/Barcode Entry Node2.py ==============
Please scan your ID: 0971558

Traceback (most recent call last):
  File "/home/pi/Desktop/Barcode Entry Node2.py", line 18, in <module>
    Main()
  File "/home/pi/Desktop/Barcode Entry Node2.py", line 13, in Main
    scan = input('Please scan your ID: ')
  File "<string>", line 1
    0971558
          ^
SyntaxError: invalid token
>>> 
================重新启动:/home/pi/Desktop/Barcode Entry Node2.py==============
请扫描您的身份证号码:0971558
回溯(最近一次呼叫最后一次):
文件“/home/pi/Desktop/Barcode Entry Node2.py”,第18行,在
Main()
文件“/home/pi/Desktop/Barcode Entry Node2.py”,主菜单第13行
扫描=输入('请扫描您的ID:')
文件“”,第1行
0971558
^
SyntaxError:无效令牌
>>> 
我尝试了一系列不同的解决方法,但它们都给了我一个错误。我试图将其转换为声明行中的字符串,但这似乎没有按照我尝试的方式工作。此外,扫描仪没有将输入括在引号中的选项。谁有我丢失的魔弹?短暂性脑缺血发作


编辑:抱歉-剪切和粘贴错误。哼

使用Python2,
input
解释您输入的所有内容(这也是一种安全漏洞)

由于在Python2中以0开头的数字被视为八进制(在Python3中,必须使用
0o
前缀时不再如此),因此存在语法错误,因为
0971558
包含高于7的数字

我会使用
raw\u input
获得一个真正的字符串:

scan = raw_input('Please scan your ID: ')
如果要转换为整数,
int
完全接受前导零,因此
int(scan)
将在不剥离前导零的情况下工作


请注意,您的原始代码在Python3中工作正常。

您能提供一些示例输入吗?这是Python2吗?如果是这样,请使用
raw\u input()
,而不是
input()
。您能否提供一个转换实际失败的示例?这里有与您的问题相关的代码。错误确认您正在运行的代码不是您选择显示给我们的代码。我搞砸了。错误文本现在是正确的。谢谢法布先生-让我这样做。我的学生试图在2和3之间做出决定。他们选择了2,因为根据他们的研究,他们认为连接到MYSQL会更容易。我会把他们推到3号。再次感谢您是的,本机绑定可以让您保持旧版本。不客气。如果答案对你有效,你可以接受它()@dvbow。现在已经没有什么比python 2更容易的了。2020年将标志着对python 2支持的结束。我已经将一个相当大的研讨会从2迁移到3,没有重大问题(除了一些缺少的绑定,所以我们进行了一些小的重写)