Просто, bin(x)
возвращает строку, представляющую двоичное число, как указывают документы .
Итак, for i in bin(num):
выполняет итерацию по символам в этой строке.
Вы можете добиться того, чего хотите, проверив вместо этого i == '1'
, так что ваш код будет
def count_ones(num):
x=0
for i in bin(num):
if i == '1':
x += 1
return x
Однако рассмотрите возможность упрощения вашей функции, используя метод count
для подсчета вхождений '1'
в двоичном представлении следующим образом:
def count_ones(num):
return bin(num).count('1')