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

Python统计数组符号变化次数代码运行结果与预期不符问题

问题原因分析

你代码的运行结果和预期不符,核心错误是符号判定规则写反了0的分类,我们可以直接逐行复现运行过程定位问题:

  • 需求明确0视为正数,但你代码里x == 0分支却将sign赋值为-1(代表负数),直接导致首个元素0被错误判定为负,和初始的last_sign=1触发了第一次无效计数,完整运行流程如下:
    1. 初始状态:last_sign=1,sign_changes=0
    2. 遍历第一个元素0:sign=-1,符合sign == -last_sign,计数变为1,last_sign更新为-1
    3. 遍历第二个元素2:sign=1,符合sign == -last_sign,计数变为2,last_sign更新为1
    4. 遍历第三个元素-1:sign=-1,符合sign == -last_sign,计数变为3,last_sign更新为-1
    5. 遍历第四个元素2:sign=1,符合sign == -last_sign,计数变为4,last_sign更新为1
    6. 后续元素1、2都是正数,不再触发计数,最终输出4
修复方案

只需要修改0的符号赋值逻辑即可得到正确结果,修改后的代码如下:

X = [0,2,-1,2,1,2]
last_sign = 1
sign_changes = 0

for x in X:
    if x == 0:
        sign = 1  # 0视为正数,赋值为1而非-1
    else:
        sign = x / abs(x)

    if sign == -last_sign:
        sign_changes = sign_changes + 1
        last_sign = sign

print(sign_changes)

运行后输出结果为2,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:54:04