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

Python中查找二进制最长连续1?代码输出异常求助

问题分析与代码修复

原代码的核心问题

  • 条件判断完全颠倒:需求是统计二进制连续1的长度,但代码中写的是if n&1 == 0时递增count,变成了统计连续0的个数。
  • 计数逻辑被强制重置:循环内的第二个if-else块,无论当前位是1还是0,都会把count重置为0,导致count根本无法累积连续1的长度,这是输出始终为1的直接原因。
  • 输出对象错误:最后打印的count是循环结束时的临时计数,而我们需要的是记录最长长度的temp。

修复后的代码

n = int(input('enter your no'))
count = 0
temp = 0
while n > 0:
    if n & 1 == 1:
        count += 1
        # 只有当前连续长度超过历史最大值时更新temp
        if count > temp:
            temp = count
    else:
        # 遇到0,连续1中断,重置计数
        count = 0
    n = n >> 1
print("最长连续1的长度:", temp)

关键修复点

  • 修正判断条件,确保最低位为1时才递增连续计数
  • 调整逻辑:仅在遇到0时重置count,连续1时持续累积并更新最长记录
  • 优化输出,直接展示目标结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:02:16