【问题标题】:Adding Digits in a Number (Need Code Explanation)在数字中添加数字(需要代码说明)
【发布时间】:2016-07-27 09:34:18
【问题描述】:

我在其他地方遇到过这个代码段。它只是将给定数字中的所有数字相加:

def sumDigits(n):
    sum = 0
    while n > 0:
        sum += n % 10
        n //= 10
    return sum

问题是,我根本不明白它背后的逻辑。特别是,我不完全了解循环的作用:

   while n > 0:
        sum += n % 10  # Why n % 10?
        n //= 10       # Again, not sure why we divide the number by 10

谁能给我一个算法如何工作的例子?

谢谢!

【问题讨论】:

  • 您知道% 运算符的作用吗?您是否考虑过查看n % 10 是什么以及n 在每次迭代中的变化?
  • 是的,我知道模数运算符。我只是不确定它在这种情况下的用途。我试过在纸上追踪它,但仍然无法弄清楚。
  • print(n, sum) 在循环中?
  • sum([int(i) for i in str(n)]) 。而不是算法。你也可以试试这个。我知道这不在谈话范围内。我刚刚提到了另一种选择。

标签: python algorithm sum-of-digits


【解决方案1】:

你应该明白两件事:

  1. n % 10 给你一个数字的最右边的数字。例如:123 % 10 = 3
  2. n // 10 删除数字的最右边的数字。例如:123 // 10 = 12

所以如果你重复这个过程,你会得到想要的结果

【讨论】:

  • 完美,非常感谢!我当然不知道。
  • 它对以十进制表示的数字(以 10 为底)这样做,因此对于任何以 b 为底(整数 > 1)和以 b 为底的系统中表示的数字 n,操作 n % b 产生最右边的数字和 n //= b 通过增强整数除法删除最右边的数字。在 Python 2 代码中,有时也可以找到 n /= b。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-10
  • 2012-08-12
相关资源
最近更新 更多