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

列表循环求和至结果为个位数的Python代码优化求助

优化循环求数字根的Python代码

你要实现的功能其实是求数字根——也就是把一个数的所有位数字反复相加,直到得到单个数字。原代码的循环求和方式在输入超长时效率低,用数学公式可以直接一步出结果,完全不会超时。

数字根的数学规则

  • 如果输入的数是0,结果就是0
  • 否则,结果等于 总和 % 9;如果余数是0且原数(或总和)不为0,结果就是9

优化后的代码

方式一:直接处理输入字符串(适合超长大数,避免转整数的开销)

s = input().strip()
# 先计算所有数字的总和
total = sum(int(c) for c in s)
if total == 0:
    print(0)
else:
    res = total % 9
    print(res if res != 0 else 9)

方式二:转成大整数计算(Python支持任意长度整数)

num = int(input().strip())
if num == 0:
    print(0)
else:
    res = num % 9
    print(res if res != 0 else 9)

为什么更高效?

不管输入多长,只需要一次遍历求和(或直接取模),没有循环迭代的过程,时间复杂度是O(n)(n为输入字符长度),比原代码的循环方式快几个量级,完全不会出现超时问题。

举个例子:输入"12345",总和是15,15%9=6,和预期结果一致;输入"999",总和27,27%9=0,所以输出9,符合规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:48:44