python中的数字 - 010

时间:2010-08-08 05:08:14

标签: python syntax numbers python-2.x

  

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

使用交互式shell时:

print 010

我回来了8.

我之前开始使用其他有零的数字(0110 = 72,013 = 11),但我无法理解......

这里发生了什么?

3 个答案:

答案 0 :(得分:12)

以前导零输入的数字被解释为八进制(基数为8)。

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

答案 1 :(得分: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))

答案 2 :(得分:3)

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

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