2016-07-27 80 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

相關問題