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
相关产品推荐
相关产品推荐

