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

Python正整数各位数字求和函数异常:输入434返回4而非11,求修正

如何修正计算正整数各位数字之和的函数?

我来帮你定位问题所在~你的代码目前只处理了数字的最后一位就直接返回结果了,这就是测试434时只得到4而非11的原因。

问题分析

你写的if x>0语句只会执行一次:取出数字的最后一位(434的最后一位是4)加到n里,然后把x变成43,但此时函数直接return n了,剩下的两位数字完全没机会被处理。

修正方案

把if改成while循环,这样只要x还大于0,就会重复执行「取最后一位累加、去掉最后一位」的操作,直到x变成0为止。

修正后的代码如下:

def digit_sum(x):
    n = 0
    while x > 0:
        # 获取最后一位数字并累加到n
        n += x % 10
        # 去掉数字的最后一位
        x = x // 10
    return n

测试验证

现在调用digit_sum(434)的执行流程是:

  • 第一次循环:x=434,n += 434%10 → n=4,x=434//10=43
  • 第二次循环:x=43,n +=43%10 → n=4+3=7,x=43//10=4
  • 第三次循环:x=4,n +=4%10 → n=7+4=11,x=4//10=0
  • 循环结束,返回11,完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:05:17