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
相关产品推荐
相关产品推荐

