Привет, помогите написать (исправить мой) код, не понимаю ошибки

Напишите функцию, которая вычисляет по заданному в десятичной системе счисления числу N количество единиц в двоичной записи этого числа (0 <= N <= 10^6)

def numberOfOnes(N):
a = 0
while N > 0: 
    if N % 2 == 1:
        a += 1
    else: 
        break
return a         

N = int(input())
k = numberOfOnes(N)
print(k)  

Ответы (4 шт):

Автор решения: Akina
def numberOfOnes(N):
  a = 0
  while N > 0: 
    a += N % 2
    N //= 2
  return a  

PS. Для отрицательных всегда возвращает ноль, есссно.

→ Ссылка
Автор решения: Іван Шнір

Альтернатива второму ответу

def numberOfOnes(N):
    result = 0
    massiv = list(bin(N))
    massiv = massiv[2:]
    for i in massiv:
        if i == "1":
            result += 1
    return result


N = int(input())
k = numberOfOnes(N)
print(k)  
→ Ссылка
Автор решения: CrazyElf

Так, для разнообразия, хотя это читерство, конечно )

def numberOfOnes(N):
    return bin(N).count('1')
→ Ссылка
Автор решения: GrAnd

Вот самый короткий вариант:

N = int(input())
f"{N:b}".count('1')

Если версия питона ещё не поддерживает f"",то так:

"{:b}".format(N).count('1')
→ Ссылка