You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python统计数字二进制表示中1的个数时代码运行结果错误

问题说明
  • 实现目标:接收用户输入的数值,统计其二进制(binary)表示中数字1的出现次数
  • 原有错误实现代码:
print(str({int(input()):'b'}).count('1'))
  • 异常表现:输入值为3时,输出结果为0,和预期结果不符。
错误原因

代码里的{int(input()):'b'}是Python字典字面量,会生成一个键为输入整数、值为字符串'b'的字典,根本没有执行整数转二进制的逻辑。比如输入3时,这个字典是{3: 'b'},转成字符串后内容为"{3: 'b'}",字符串里完全没有字符'1',调用count('1')自然返回0。

问题本质是混淆了字典字面量和字符串格式化的进制转换语法::b的进制转换占位符必须放在f-string字符串、str.format()方法或者format()函数里才会生效,直接写在大括号里只会被识别为字典结构。

修复代码

两种常用正确写法:

  1. 用内置bin()函数实现,该函数会返回带0b前缀的二进制字符串,前缀不含'1'不影响计数:
print(bin(int(input())).count('1'))
  1. 用格式化语法直接生成不带前缀的二进制字符串:
print(f"{int(input()):b}".count('1'))

验证测试:输入3时,3的二进制是11,包含2个'1',上述代码运行后输出2,结果正确。

内容的提问来源于stack exchange,提问作者Mariana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 07:01:02