一开始的解法:
n = int(input())
# 切片去掉二进制数前面的"0b",比如n=5,bin(n)就是'0b101',去掉'0b'就是'101'
s = bin(n)[2:]
c = 0
for i in range(len(s)):
if s[i] == '1':
c += 1
print(c)
python切片需要注意的地方:
①str[-1]表示取字符串最后一个字符;
而str[:-1]表示取除了字符串最后一个字符以外的所有字符,不包括最后一个字符!
后来看排行榜最优解,发现有count方法可以直接用:
n = int(input())
# 把十进制数转成二进制
s = bin(n)
print(s.count('1'))
count()方法:str.count(sub, start= 0,end=len(string)),sub表示搜索的子串,start、end表示字符串开始搜索和结束搜索的地方;
bin(n)方法:把十进制数转成二进制数(字符类型)。
PS:关于进制转换,详见https://blog.youkuaiyun.com/qq_29349463/article/details/120004589?spm=1001.2014.3001.5501