Python数字各位求和程序异常:输入29返回2而非预期11求助
问题排查与解决
你的代码实现的是数字根计算(反复将各位数字求和,直到结果为单个数字),而非你需要的「单次各位数字之和」。这就是输入29返回2的原因:
- 第一次求和:2+9=11
- 因为11≥10,触发外层
while循环,继续拆分11求和:1+1=2 - 最终返回2
修正后的代码
移除外层的while循环,只保留单次求和逻辑即可满足需求:
def soma_digitos(y): digitosSum = 0 # 仅计算一次各位数字之和 while y > 0: digitosSum += y % 10 y //= 10 return digitosSum # 读取输入 y = int(input("Digite um número inteiro: ")) # 输出结果 print("Todos os dígitos somados:", soma_digitos(y))
验证结果
输入29时,程序会直接计算2+9=11并返回,完全符合预期。如果后续需要计算数字根,再恢复外层的while循环即可。
内容的提问来源于stack exchange,提问作者Gabriel Mariano
相关产品推荐
相关产品推荐

