Привет, помогите написать (исправить мой) код, не понимаю ошибки
Напишите функцию, которая вычисляет по заданному в десятичной системе счисления числу 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')