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

あなたは2つのことを理解する必要があります。

  1. n % 10はあなたの番号の右端の桁を与えます。例:123 % 10 = 3
  2. n // 10数字の右端の数字を削除します。たとえば:123 // 10 = 12

ので、あなたがそのプロセスを繰り返した場合、あなたが希望する結果

+0

完璧、おかげで束!私は確かにそれを知らなかった。 –

+0

@FieryPhoenixご参考までに –

+1

10進法で表される数値(基数10)の場合はそうです。したがって、基数bのシステムで表される任意の基数b(整数> 1)および数値nの場合、演算n%bは、右端の桁とn // = bは、拡張された整数の除算によって右端の桁を削除します。 Python 2のコードでは、時にはn/= bも見つかることがあります。 – Dilettant

関連する問題