一开始的解法:
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.csdn.net/qq_29349463/article/details/120004589?spm=1001.2014.3001.5501