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

Python两数相加进位统计代码仅单次执行不循环问题求助

整数相加进位次数统计问题排查与修复

问题根因

  • 原代码使用if判断代替循环逻辑,代码块只会执行1次,且return count语句写在判断块内部,第一次执行完就直接返回结果,无法遍历所有数位
  • 未记录前序位产生的进位值,计算当前位的和时没有加上前序进位,会导致进位统计错误
  • 循环终止条件仅参考num1的长度,若num2位数更多时会出现漏算

修复后可正常运行的代码

def NumberOfCarries(num1, num2):
    count = 0
    carry = 0  # 记录前一位的进位值
    # 只要两个数还有未处理的数位就继续循环
    while num1 > 0 or num2 > 0:
        n1 = num1 % 10
        n2 = num2 % 10
        current_sum = n1 + n2 + carry
        if current_sum >= 10:
            count += 1
            carry = 1
        else:
            carry = 0
        # 移除已经处理过的最后一位
        num1 = num1 // 10
        num2 = num2 // 10
    return count

num1 = int(input("> "))
num2 = int(input("> "))
print(NumberOfCarries(num1, num2))

验证说明

输入测试用例451和349时,代码会逐位计算:

  1. 个位:1 + 9 + 0 = 10,进位次数+1,进位值记为1
  2. 十位:5 + 4 + 1 = 10,进位次数+1,进位值记为1
  3. 百位:4 + 3 + 1 = 8,无进位
    最终返回结果为2,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:18:02