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

Python计算数字各位和时代码拼接而非求和的原因是什么?

问题原因分析
  • 各位和计算逻辑错误:你当前k += (num - k)%i的写法实际是累加数字最后n位的完整数值,而非单个位的数字。比如输入123,第二次循环时会计算(123-3)%100=120,直接加到k上就得到123,看起来就像数字拼接,完全不符合逐位求和的需求。
  • 位数统计存在边界bug:当输入数字是10的整次幂时(比如1、10、100),循环判断条件i < num不会触发,会得到错误的位数结果,比如输入1会显示位数为0。
修复方案

下面是修改后的可用代码,改成了逐位取余的逻辑,同时计算位数和各位和,逻辑更清晰也没有边界问题:

# 获取输入数字,输出位数和各位数字之和
num = int(input('Enter a number: '))
# 兼容输入为0的场景
if num == 0:
    print(' The number has 1 digit(s), and the sum is: 0')
else:
    digit_count = 0
    sum_digits = 0
    temp = num
    while temp > 0:
        # 取当前个位数字累加
        sum_digits += temp % 10
        # 去掉已计算的个位
        temp = temp // 10
        digit_count += 1
    print(f' The number has {digit_count} digit(s), and the sum is: {sum_digits}')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:15:01