Python处理整数从0开始?

时间:2014-11-09 07:35:26

标签: python python-2.7

我对Python比较新,但通常觉得很容易找到它。我只是遇到了一些东西,这让我有点兴奋。

我知道类型检查不是非常Pythonic但是我处理用户输入并且它在这里似乎很有用。我期望以下代码(在Python 2.7.6中)将不相关的输入更改为空字符串,但在交互式解释器中尝试时,它返回了一个意外的int。任何人都可以告诉我这是否是Python中的特殊值,或解释为什么会发生这种情况。

我想也许"代码"可能是保留变量的名称,即。一个在内部使用,但更改名称似乎没有结果。

>>> code = 0134
>>> if type(code) is not int: code =""
... 
>>> code
92

我确信我可以找到另一种方法去做我在这里尝试做的事情,所以这不是重点。我只是想弄清楚意外的int会发生什么。

谢谢,

罗布

2 个答案:

答案 0 :(得分:1)

>>> code = 0134

在python 2.7.6中,由于前导0,它定义了八进制数132.这等于小数92.

>>> if type(code) is not int: code =""

如果它不是int,那么你清除它。

>>> code = 0134
>>> type(code)
<type 'int'>

正如你所看到的,你确实有一个int。当你打印出来时,你得到了基数为10的表示,即92。

这种引起混淆的特殊原因导致了以下PEP http://legacy.python.org/dev/peps/pep-3127/

答案 1 :(得分:1)

当一个数字在Python中以0开头时,它被解释为八进制数。在八进制中的0134是十进制的92。

我不确定为什么你认为该值的类型不是int。这是一个整数。