【问题标题】:Enter and store a number starting with 0 (zero) in Python?在 Python 中输入并存储一个以 0(零)开头的数字?
【发布时间】:2017-11-22 23:21:06
【问题描述】:

我正在使用 Python2 开发一个简单的学生考勤计划。我正在使用充当键盘的 HID 扫描仪。每个学生证都有一个条形码,上面有他们的身份证号码。不幸的是,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
>>> 

我尝试了很多不同的解决方法,但它们都给了我一个错误。我试图将它转换为声明行中的字符串,但这似乎不像我尝试的那样工作。此外,扫描仪没有将输入括在引号中的选项。有人有我失踪的灵丹妙药吗? TIA

编辑:对不起 - 错误的剪切和粘贴。 . .呵呵!

【问题讨论】:

  • 你能提供一些示例输入吗?
  • 这是python 2吗?如果是这样,请使用raw_input(),而不是input()
  • 你能提供一个转换实际失败的例子吗?这里有与您的问题实际相关的代码。
  • 该错误确认您正在运行的代码不是您选择向我们展示的代码。
  • 我搞砸了。 . .错误文本现在是正确的。

标签: python python-2.x zero octal


【解决方案1】:

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

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

我会使用raw_input 来获得一个真正的字符串:

scan = raw_input('Please scan your ID: ')

如果您想转换为整数,int 可以接受前导零,因此int(scan) 可以在不去除它们的情况下工作。

请注意,您的原始代码在 python 3 中可以正常工作。

【讨论】:

  • 谢谢 Fabre 先生 - 让我来做。 . .我的学生试图在 2 和 3 之间做出决定。 . .并选择了 2,因为他们认为根据他们的研究连接到 MYSQL 会更容易。我会将它们推向 3。再次感谢您
  • 是的,本机绑定可以让您使用旧版本。别客气。如果它适合你,你可以接受答案 (stackoverflow.com/help/someone-answers)
  • @dvbow。这些天来,没有什么比这更容易了。
  • 2020 年将标志着对 python 2 的支持结束。我已经将一个相当大的研讨会从 2 迁移到 3,没有出现重大问题(除了一些缺少绑定,因此我们进行了一些小的重写)跨度>
猜你喜欢
  • 2015-06-28
  • 2011-02-16
  • 2010-10-04
  • 2011-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-21
  • 1970-01-01
相关资源
最近更新 更多