【问题标题】:Number in python - 010 [duplicate]python中的数字 - 010 [重复]
【发布时间】:2011-03-26 21:04:33
【问题描述】:

可能重复:
How do you express binary literals in Python?

使用交互式 shell 时:

print 010

我得到一个 8。

我之前开始使用其他零数字(0110 = 72, 013 = 11),但我无法弄清楚......

这是怎么回事?

【问题讨论】:

标签: python syntax numbers python-2.x


【解决方案1】:

以零开头的数字被解释为八进制(以 8 为底)。

007 == 7
010 == 8
011 == 9

【讨论】:

【解决方案2】:

Python 对八进制和十六进制文字采用了 C 的表示法:以 0 开头的整数文字是八进制,而以 0x 开头的是十六进制。

0 前缀被认为容易出错,因此 Python 3.0 将八进制前缀更改为 0o

【讨论】:

    【解决方案3】:

    与许多语言一样,带有前导零的整数被解释为八进制。这意味着它是以八为底的。例如,020 的十进制值为 16,030 的十进制值为 24。 为了完整起见,这就是它的工作方式。 value 接受一个字符串并返回解释为八进制的该字符串的十进制值。它不进行任何错误检查,因此您必须确保每个数字都在 0 到 8 之间。不需要前导 0。

        def value(s):
            digits = [int(c) for c in s]
            digits.reverse()
            return sum(d * 8**k for k, d in enumerate(digits))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 2021-04-03
      • 2018-09-26
      • 2023-02-17
      相关资源
      最近更新 更多