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

负数输入时,基于数字位数的5次幂乘法Python函数结果异常问题

问题原因与解决方案

你的函数处理负数时结果不符合预期,核心原因是将负数转为字符串时,负号-被计入了长度统计。比如输入-2,str(-2)得到的是"-2",长度为2,导致计算式变成5**2 * (-2) = -50,但你预期的是基于数字部分的位数(1位)计算5**1 * (-2) = -10。

修正方法

方法一:通过绝对值排除负号影响

先取输入的绝对值再转字符串计算位数,这样负号不会被统计:

def multiply(n):
    return 5 ** len(str(abs(n))) * n

测试输入-2时,abs(-2)为2,str(2)长度为1,计算得5*(-2) = -10,符合预期。

方法二:判断负数并调整长度

直接判断输入是否为负数,若为负则将字符串长度减1:

def multiply(n):
    s = str(n)
    length = len(s) - 1 if n < 0 else len(s)
    return 5 ** length * n

这种方式同样能排除负号的干扰,得到正确的数字位数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 22:57:33