计算二进制中表示1的数(python练习)

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

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

示例输入

25

示例输出

3

本题使用了bin()函数将整数转换为对应的二进制字符串,并且对生成的字符串进行了切片操作,因为bin()函数生成的结果是以0b开头的以表示二进制字符串。

另外还用到了字符串的coun()函数,这里要注意其参数是字符'1',而不是数字1。

def count_binary_ones(num):
    # 此处写你的代码 
    byte=bin(num)[2:]
    return byte.count('1')

# 从标准输入读取一个整数
num = int(input())
# 调用函数
print(count_binary_ones(num))
以下是一些关于 Python二进制、八进制、十六进制转化的练习题目: ### 基础题目 1. 将十进制 25 分别转换为二进制、八进制和十六进制表示。 ```python decimal_num = 25 binary_num = bin(decimal_num) octal_num = oct(decimal_num) hexadecimal_num = hex(decimal_num) print(f"二进制: {binary_num}") print(f"八进制: {octal_num}") print(f"十六进制: {hexadecimal_num}") ``` 2. 已知二进制 `0b101010`,将其转换为十进制、八进制和十六进制。 ```python binary_num = 0b101010 decimal_num = int(binary_num) octal_num = oct(binary_num) hexadecimal_num = hex(binary_num) print(f"十进制: {decimal_num}") print(f"八进制: {octal_num}") print(f"十六进制: {hexadecimal_num}") ``` 3. 把八进制 `0o34` 转换为二进制、十进制和十六进制。 ```python octal_num = 0o34 binary_num = bin(octal_num) decimal_num = int(octal_num) hexadecimal_num = hex(octal_num) print(f"二进制: {binary_num}") print(f"十进制: {decimal_num}") print(f"十六进制: {hexadecimal_num}") ``` 4. 十六进制 `0x1F` 转换为二进制、八进制和十进制。 ```python hexadecimal_num = 0x1F binary_num = bin(hexadecimal_num) octal_num = oct(hexadecimal_num) decimal_num = int(hexadecimal_num) print(f"二进制: {binary_num}") print(f"八进制: {octal_num}") print(f"十进制: {decimal_num}") ``` ### 进阶题目 1. 编写一个函,接受一个十进制和目标进制(2、8 或 16)作为参,返回该十进制转换为目标进制的字符串表示。 ```python def convert_number(decimal_num, target_base): if target_base == 2: return bin(decimal_num) elif target_base == 8: return oct(decimal_num) elif target_base == 16: return hex(decimal_num) else: return "不支持的目标进制" decimal = 30 base = 16 result = convert_number(decimal, base) print(result) ``` 2. 有一个包含多个不同进制二进制、八进制、十六进制)的列表,编写代码将列表中的所有转换为十进制,并计算它们的总和。 ```python numbers = [0b101, 0o23, 0x1A] decimal_sum = sum(int(num) for num in numbers) print(decimal_sum) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值