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

Python代码统计1的个数本该输出1却返回长数值列表求助

问题根源

  • 你当前的统计逻辑和打印位置都存在错误:
    • 你把print(D5)放在了for循环内部,每执行一次循环就会打印当前单次的判断结果,所以会输出179条独立的值
    • 你没有在循环外定义全局计数器来累计所有循环中1的出现次数,每次循环内计算的D5仅代表当前旋转角度下的匹配结果是否为1,自然无法得到所有运算结果里1的总个数
  • 冗余操作说明:D3本身就是单个整数,你将其转为numpy数组再调用sum()是不必要的操作,直接判断D3 == 1即可得到布尔结果,累加时布尔值True会自动按1计算、False自动按0计算,不需要额外转换。

修正后可实现需求的代码

# 循环外先初始化统计1的总个数的计数器
count_ones = 0
for i in range(0, 179):
    imgr = ndimage.rotate(img, i)
    start_row, start_col = int(0), int(0)
    end_row, end_col = int(Y), int(width)
    cropped_top = imgr[start_row:end_row , start_col:end_col]
    start_row, start_col = int(Y), int(0)
    end_row, end_col = int(height), int(width)
    cropped_bot = imgr[start_row:end_row , start_col:end_col]
    D1 = cv2.matchShapes(cropped_top, cropped_bot, cv2.CONTOURS_MATCH_I2, 0)  
    D2 = D1*100     
    D3 = math.ceil(D2)
    # 满足条件就累加计数器
    if D3 == 1:
        count_ones += 1
# 循环全部执行结束后再打印总个数
print(count_ones)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:24:06