python-找出与输入数字中的二进制表示相等的1的数字

use*_*721 0 python binary count

我是python编程的新手.刚刚遇到这个问题.我必须采用自然数n作为输入和输出将是自然数m,使得m> n和m的二进制表示中的1的数量= n的二进制表示中的1的数量.(样本输入:23,输出:27)这是我写的.我在使用while循环时遇到了麻烦.

n=int(input('input number:'))
x=''
for i in range(1,n+1):
    x=str(n%2)+x 
    n>>=1

List=[]

for i in x:
    List.append(i)
n_count=List.count('1') 
m=n+1
y=''
while m>n:
    for i in range(1,m+1):
        y=str(m%2)+y 
        m>>=1

    List2=[]
    for i in y:
        List2.append(i)
    m_count=List2.count('1')

    if m_count==n_count:
        print (m)
        break

    m=m+1
Run Code Online (Sandbox Code Playgroud)

Jul*_*ian 5

这听起来像是家庭作业,所以我只是给你一个提示.您可以使用该bin函数来获取整数的二进制表示,而不是完成所有这些操作.要获得具有相同数量的数字,只需在任何位置添加零,但首先要检查第二个参数是什么int来获取数字.