What Do Numbers Starting With 0 Mean in Python

What do numbers starting with 0 mean in python?

These are numbers represented in base 8 (octal numbers).
Some examples:

Python 2 (old format)

Note: these forms only work on Python 2.x.

011 is equal to 1⋅8¹ + 1⋅8⁰ = 9,

0100 is equal to 1⋅8² + 0⋅8¹ + 0⋅8⁰ = 64,

027 is equal to 2⋅8¹ + 7⋅8⁰ = 16 + 7 = 23.

Python 3 (new format)

In Python 3, one must use 0o instead of just 0 to indicate an octal constant, e.g. 0o11 or 0o27, etc. Python 2.x versions >= 2.6 supports both the new and the old format.

0o11 is equal to 1⋅8¹ + 1⋅8⁰ = 9,

0o100 is equal to 1⋅8² + 0⋅8¹ + 0⋅8⁰ = 64,

0o27 is equal to 2⋅8¹ + 7⋅8⁰ = 16 + 7 = 23.

Python number starting with 0

A leading zero means an octal number, which is one that allows the digits 0 through 7 inclusive,

So, while 02132 is a valid octal number, 02492 is not, because it contains the non-digit (in the context of octal numbers) character 9.

It's no different from asking a computer to process a decimal number such as:

num = 3v14159

You should also be careful with things like 02132 - it is not the same as the decimal number 2132, rather it's the octal variant 2x83 + 1x82 + 3x81 + 2x80, or 1114.

Number with 0 in front of it

Literals beginning with zero in python 2 are octal. For example, octal 31 is 25 in base 10.

For a more complete answer, see What do numbers starting with 0 mean in python?

Python cannot handle numbers string starting with 0. Why?

My guess is that since 012 is no longer an octal literal constant in python3.x, they disallowed the 012 syntax to avoid strange backward compatibility bugs. Consider your python2.x script which using octal literal constants:

a = 012 + 013

Then you port it to python 3 and it still works -- It just gives you a = 25 instead of a = 21 as you expected previously (decimal). Have fun tracking down that bug.

leading zeros in python

Numbers with a leading zero in them are interpreted as octal, where the digits 8 and 9 don't exist.

It's worse in Python 3, leading zeros are a syntax error no matter which digits you use. See What’s New In Python 3.0 under "New octal literals". Also PEP 3127.

Why leading zero not possible in Python's Map and Str

This happens because the leading zero means you are writing an octal number and you can't have 9 or 8 in an octal number. See:

>>> a = 0123
>>> a
83
>>> a = 010
>>> a
8

You can just do:

>>> map(int, '08978789787')
[0, 8, 9, 7, 8, 7, 8, 9, 7, 8, 7]


Related Topics



Leave a reply



Submit