私はPythonプログラミングの初心者です。この1つの問題に行き詰まりました。入力として自然数 n を取り、出力は m>n かつ m の 2 進表現での 1 の数 = n の 2 進表現での 1 の数となるような自然数 m になります。 (サンプル入力: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