Using while loop and if statement, I'm trying to get Python to
tell me whether there are even or odd number of 1's in a
binary representation. For example, if I give Python a
00000111, then I want it to say that the binary representation
given has an odd number of 1's. If I give it 00010111, then it
will tell me that there is an even number of 1's. I'd
appreciate any suggestion.

A couple come to mind. First, start by counting the bits. If it's a string, this is easy:

  b = "00010111"
  result = b.count('1')

If it's an integer datatype instead of as string, as long as you know the number of bits to expect, you can use

  x = 0xf7
  result = sum((x >> i) & 1 for i in range(8))

where 8 is the number of bits you expect. If you don't know the number of bits to expect, you'd have to do it in a more open-ended loop:

  x = 0xDEADBEEF
  result = 0
  while x:
    result += x & 1
    x >>= 1

Once you have the resulting count, you can then check if it's even or odd:

  if result & 1:
    print "Odd"
  else:
    print "Even"

Hope this helps,

-tkc




--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to