python 中以 0 开头的数字代表什么意思?
- 2024-12-20 08:37:00
- admin 原创
- 71
问题描述:
当我在 Python 中输入前面带有 0 的小整数时,它们会给出奇怪的结果。这是为什么?
>>> 011
9
>>> 0100
64
>>> 027
23
我使用的是 Python 2.7.3。我在 Python 3.0 中测试过,显然现在这是一个错误。所以这是特定于版本的问题。
它们显然仍然是整数:
>>> type(027)
<type 'int'>
解决方案 1:
这些是以 8 进制 (八进制数) 表示的数字。以下是一些示例:
Python 2(旧格式)
注意:这些形式仅适用于 Python 2.x。
011
等于 1⋅8¹ + 1⋅8⁰ = 9,
0100
等于 1⋅8² + 0⋅8¹ + 0⋅8⁰ = 64,
027
等于 2⋅8¹ + 7⋅8⁰ = 16 + 7 = 23。
Python 3(新格式)
在 Python 3 中,必须使用0o
而不是0
来表示八进制常数,例如0o11
或0o27
等。Python 2.x 版本 >= 2.6 同时支持新格式和旧格式。
0o11
等于 1⋅8¹ + 1⋅8⁰ = 9,
0o100
等于 1⋅8² + 0⋅8¹ + 0⋅8⁰ = 64,
0o27
等于 2⋅8¹ + 7⋅8⁰ = 16 + 7 = 23。
解决方案 2:
在 Python 2(以及其他一些编程语言)中,这些代表八进制数。
在 Python 3 中,011
不再起作用,您可以改用0o11
。
回应编辑:和 它们是常规整数。它们只是以不同的方式指定;并且它们由 Python 自动转换为内部整数表示(实际上是以 2 为基数,因此9
和都011
在内部转换为0b1001
)。
解决方案 3:
Python 2.6+ 和 Python 3 都理解以“0o”和“0O”(大写 o)开头的八进制,因此在使用 Python 2.x 时也要养成使用 if 的习惯。
字符串中的数字仅使用前导零。
您可以使用 int() 转换来自任何其他基本系统的整数。
>>> int(0o20)
16
如果您希望输出以前导零显示,请按照以下答案进行定义:
显示带有前导零的数字
如果您打算使用邮政编码,最好在所有方面都将其视为字符串。
解决方案 4:
八进制数字。其他前缀0x
用于十六进制和0b
二进制。
解决方案 5:
这些是八进制数(基数为 8,值 0 - 7)
您可以使用oct()函数将十进制数转换为八进制。
In [125]: for i in range(10):
.....: print '{:5} {:5}'.format(i, oct(i))
.....:
0 0
1 01
2 02
3 03
4 04
5 05
6 06
7 07
8 010
9 011
并使用具有适当基数(在本例中为 8)的int()函数将八进制值转换为整数:
int(str(17), 8)
Out[129]: 15
使用hex()函数,类似的规则/函数集适用于十六进制数(基数 16)。
解决方案 6:
这很简单。它们是八进制数。
http://en.wikipedia.org/wiki/Octal
还有一些以 开头的数字0x
。它们是十六进制数:
>>> 0x51
81
解决方案 7:
它们显然是八进制(基数为 8)数字,而 0 只是 Python 2 曾经使用过的过时前缀。
在 Python 3 中你必须写:0o11
。
它们仍然是整数,但对它们进行运算将给出常规十进制形式的结果。
解决方案 8:
我已经尝试过了。我学到了一点。从 Java 中我知道这是一个陷阱:前导零会引入八进制数。我的同事们没有意识到这一点。在 Java 中工作多年后,他们仍然不知道这一点。
现在我对 Python 中的行为很感兴趣。我很欣赏从 Python 2 到 Python 3 的这种变化。这是一个陷阱,我从来没有理解为什么 Java(一种专注于“简单”的年轻语言)可以从 C 中接管这个愚蠢的解决方案。
以零开头的前缀可能会被意外输入(糟糕的解决方案)。十六进制数的 0x 永远不会被意外输入(好的解决方案)。但是 0 和 o 太相似了,因此我认为 Python 中的 0o23 不是一个完美的解决方案。我认为 0c23(o c tal)会是一个更好的解决方案。
解决方案 9:
数字文字的最新 Python 规范位于PEP-3127“整数文字支持和语法”中
Python 3.0 中已删除 011 的语法。Python 2.6 中添加了 0o11 的语法,它是 Python 3.0 之后唯一支持的语法。Python __future__
2 中没有导入可以禁止或至少警告带有前导零的数字文字,因此开发人员必须知道 011 的含义以及应该避免使用它(并且实际上可以避免使用它)。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理必备:盘点2024年13款好用的项目管理软件