2016-07-27 84 views
0

我在其他地方发现了这个代码段。它只是添加给定数字中的所有数字:在一个数字中添加数字(需要解释代码)

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 

有人可以提供一个算法如何工作的例子吗?

谢谢!

+1

你知道''%运营商做什么?你有没有考虑看看'n%10'是什么以及每次迭代时'n'如何变化? –

+0

是的,我知道模数运算符。我只是不确定它在这种情况下的使用。我试图在纸上找到它,但仍然无法弄清楚。 –

+0

'print(n,sum)'在循环中? – polku

回答

9

你应该明白两两件事:

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

所以如果你重复这一过程,你得到期望的结果

+0

完美,谢谢一堆!我当然不知道。 –

+0

@FieryPhoenix不客气 –

+1

对于以十进制表示的数字(基数为10),所以对于任何基数b(整数> 1)和数n在系统中用基数b表示的操作n%b产生最右边的数字和n // = b通过增加的整数除法删除最右边的数字。在Python 2代码中,有时候也可能找到n/= b。 – Dilettant

相关问题