Reputation: 7504
I am trying to iterate over the input 011
as a string like:
val = str(011)
for _iter in range(len(val)):
if _iter[i]=='1':
print "yes"
But on checking the values, it seems to give different ouput.
>>> val = str(011)
>>> val
'9'
>>> val = str(42565)
>>> val
'42565'
Why I am getting '9'
for the above value ??
Implementation:
I want to display the values of a list
suppose list = [1,2,3]
according to the string 011
so the output will be
2
3
Upvotes: 1
Views: 4175
Reputation: 137398
011
Having a '0' prefix, is interpreted as an octal (base 8) number. 1*8 + 1 = 9
If you want to iterate over the characters, then simply make it a string by enclosing it in quotes:
val = '011'
To convert a string of 0 and 1 characters like this to an integer, you can call int
like this:
int(val, base=2)
To bypass the string parsing, and simply assign a binary constant to a variable, use the 0b
prefix:
val = 0b011
print val # outputs 3
Upvotes: 2