Python将数字转换为其二进制表示并计算“1”的个数

Python每日一练


问题:

编写一个程序来计算整数的二进制表示中1的个数。

定义函数count_binary_ones(),参数为数字num。
在函数内,将数字转换为其二进制表示,并计算“1”的个数。

题目来源:PythonTip
https://edu.py2fun.com/


代码实现

代码如下(示例):

def count_binary_ones(num):
    # 此处写你的代码 
    numbers = []		# 利用除2取余法,把二进制数字保存到列表中
    while num != 0:
        numbers.append(num % 2)
        num = num // 2

    counts = 0		# 统计列表中1出现的次数
    for i in numbers:
        if  i == 1:
            counts += 1
    
    return counts
    
# 从标准输入读取一个整数
num = int(input())
# 调用函数
print(count_binary_ones(num))

示例输入:

11

示例输出:

3


总结

十进制转二进制采用“除2取余,逆序排列”法。
例如:把十进制11转二进制步骤如下:

第一步:11除以2=5 余1

第二步:5除以2=2 余1

第三步:2除以2=1 余0

第四步:1除以2=0 余1

结论:把余数逆序排列,11的二进制为1011。

由于题目只统计“1”出现的次数,因此上述代码并没有进行逆序操作,在总结中我们重新实现一下十进制转二进制的操作:

代码如下(示例):

input_num = 11
num = input_num
numbers = []
while num != 0:
    numbers.append(num % 2)
    num = num // 2

binary = 0
for i in range(len(numbers)):
    binary += numbers[i] * (10 ** i)

print("{}的二进制为:{}".format(input_num,binary))

示例输入:

11

示例输出:

11的二进制为:1011

实际上利用Python某些内置函数的话,题目要求更容易实现,但是每日一练的初心就是为了熟悉Python的语法结构与数据类型特点,我们尽量去用最基础的语法实现一些功能。
这里我们也顺带利用内置函数实现一下上述问题:

代码如下(示例):

def count_binary_ones(num):
    # 此处写你的代码 
    binary = bin(num)		# bin()函数可以返回整数型的二进制字符串形式
    counts = binary.count("1")		# srting.count()方法可以返回某字符出现在该字符串的次数
    
    return counts
    
# 从标准输入读取一个整数
num = int(input())
# 调用函数
print(count_binary_ones(num))

示例输入:

11

示例输出:

3

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值