I’m new with python, I’m using python 2.7
when I typed this on python shell:
print 01 print 010 print 0100 print 01000
It gives this result
1 8 64 512
I tried to understand why it gave that but unfortunately I didn’t get the point.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
If a number starts with 0, it is interpreted as octal, or base 8. Just do:
print 1 print 10 print 100 print 1000
And your problem will be solved.
More on octal: http://en.wikipedia.org/wiki/Octal
Here is a way to understand octal easier:
octal 1 is decimal (normal numbers) 1
octal 2 : decimal 2
…
octal 7 : decimal 7
octal 10: decimal 8
octal 11: decimal 9
octal 12: decimal 10
…
octal 17: decimal 15
octal 20: decimal 16
and so on. Octal just uses digits from 0 to 7.
Hope this helped!
Method 2
Python interprets a number starting with 0 as octal which is base 8.You can work out the base using the binary string 10 as b^1 === b where b is the base.
# print the decimal value of the binary number 10 >>> print 0b10 2 # print the decimal value of the octal number 10 >>> print 010 8 # print the decimal value of the hexadecimal number 10 >>> print 0x10 16
In any base the symbol 1 is always the decimal value 1 because b^0 === 1 for all b as reading right to left the index of a number starts at 0.
# print the decimal value of the binary number 1 >>> print 0b001 1 # print the decimal value of the octal number 1 >>> print 0001 1 # print the decimal value of the hexadecimal number 1 >>> print 0x001 1
Once the base is interpreted (0,0b,0x) leading 0 aren’t important.
The number of symbols needed for a base is b where the largest symbols is equal to b-1
Base (b) Number of Symbols (b) Symbols (0 : b-1) Binary 2 2 0,1 Octal 8 8 0,1,2,3,4,5,7,6,7 Decimal 10 10 0,1,2,3,4,5,7,6,7,8,9
The largest value that can be represented by a number is (b^n)-1 where n is the number of digits. Given a 3 digit number the largest decimal value is (10^3)-1 = 999, in octal (8^3)-1 = 511 (decimal) which is 777 in base 8 and in binary (2^3)-1 = 7 (decimal) which is 111 in base 2. So you can see that with less symbols (a lower base) the value you can represent decreases given a fixed number of digits.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0