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

Python计算整数各位数字之和时负数计算错误问题求解

问题根因

现有代码无法处理负整数的核心原因有两点:

  • 循环执行的判断条件为n > 0,输入负整数时初始n值小于0,循环体完全不会执行,累加变量suma始终是初始值0,直接输出错误结果
  • Python中负数的取模、整除运算规则和正数存在差异,就算放开循环条件,直接对负数做%10、//10运算也会得到不符合数位计算预期的结果,比如-56 % 10返回值是4而非6,-56 // 10返回值是-6而非-5
  • 循环内部额外嵌套的if n > 0判断属于完全冗余的逻辑,没有实际作用
修改要点

只需要补1处核心逻辑,删除1处冗余代码即可:

  • 读取输入后,立刻用内置abs()函数将n转换为绝对值,统一把负整数转为对应正整数后再做数位累加,不需要单独编写正负分支判断
  • 删除while循环内部多余的if n > 0判断语句
修改后完整代码
n = int(input("Input a number: ")) 
suma = 0
n = abs(n)  # 统一转为非负整数,兼容正负整数输入
while n > 0:
    last = n % 10
    suma += last
    n = n // 10
print("The sum of digits of the number is: ", suma)
效果验证
  • 输入-56时,n先被转为56,循环累加6+5=11,输出正确结果
  • 输入正整数(比如123)时,abs处理后值不变,累加3+2+1=6,和原有正整数场景的运行结果完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 20:01:03