使用交互式shell时:
print 010
我回来了8.
我之前开始使用其他有零的数字(0110 = 72,013 = 11),但我无法理解......
这里发生了什么?
答案 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
。