Using while loop and if statement to tell if a binary has an odd or even number of 1's.

Mark Dickinson dickinsm at gmail.com
Thu Feb 5 10:04:57 CET 2009


On Feb 5, 1:18 am, Chris Rebert <c... at rebertia.com> wrote:
> For an integer:
> is_even = bin(the_int)[2:].count('1') % 2 == 0

But the OP has to use if and while.  How about:

while 2+2 != 5:
    if 'wkw' in 'just being awkward':
        is_even = bin(the_int)[2:].count('1') % 2 == 0
        break

or (Python 2.5 compatible):

def count_set_bits(n):
    # make sure we include an if, to
    # satisfy OP's requirements:
    if n < 0:
        raise ValueError
    count = 0
    while n:
        count += 1
        n &= n-1
    return count

is_even = count_set_bits(the_int) % 2 == 0

...but anyone submitting this as a homework
solution had better be prepared to explain why
it works.


Mark



More information about the Python-list mailing list