在我的python脚本中,我执行以下操作:
>>> x = 0123456
但是,当我打印出来时,就会出现这样的结果:
>>> x = 0123456
>>> print x
42798
这是否与前面的零有关?或者只是我的电脑?
答案 0 :(得分:2)
以0开头的数字文字被视为八进制数。你可以像这样实现它
print int("123456", 8) # 42798
我们要求int
函数将数字123456
视为基数为8的数字。
注意这只适用于Python 2.7。因为在Python 2.7中,octal numbers are defined like this
octinteger ::= "0" ("o" | "O") octdigit+ | "0" octdigit+
但是in Python 3.x, this is changed to
octinteger ::= "0" ("o" | "O") octdigit+
因此,在Python 3.x中,这将被视为语法错误,
x = 0123456
# SyntaxError: invalid token
如果您要在代码中表示八进制数字,则应该
x = 0o123456 # Remember the o (for octal) after the first 0
这适用于Python 2.7和3.x
答案 1 :(得分:1)
前导0
表示它被解释为八进制数。 Octal 0123456的小数是42798。同样,如果您有x = 0x123456
,则打印出1193046,因为0x
表示它是十六进制数。