suzu6

プログラミングについて書き綴っていきます。

python3で整数の各桁の合計を求める方法

python3で整数の各桁の合計を求める方法

とあるサイトの問題を解いていて、題意のコードをすっきり書けたので紹介します。(その問題はもう一工夫必要です)

整数の各桁の合計を求めます。 pythonでは桁数に依らず、一括で計算することができます。

各桁の合計を求める。

u""" 各桁の合計値を計算
"""
def digitSum(n):
    s = str(n)
    array = list(map(int, list(s)))
    return sum(array)

if __name__ == "__main__":
    n = 12345
    result = digitSum(n)

    print(result) # 15

digitSum()は、数値を受け取り各桁の合計値を返しています。

list(s)は文字列を一文字ずつのリストに変換します。

list(map(int, list(s)))では、文字列を整数のリストに変換しており、sum()を使って合計値を計算しています。

指定の桁になるまで各桁の合計を求める。

また、指定の桁まで繰り返し合計値を計算する場合は下記のやり方がスマートです。

u""" 各桁の合計値を計算
     桁数が1になるまで繰り返す
"""
def digitSum(s):
    if len(s) is 1:
        return s
    array = list(map(int, list(s)))
    return digitSum(str(sum(array)))

if __name__ == "__main__":
    n = 12345
    s = str(n)
    result = digitSum(s)
    print(int(result)) # 6

while文で1桁になるまで繰り返しています。数値を変えることで任意の桁数が求められます。

今回のdigitSum(s)は、入出力を文字列とすることで少し速度を上げています。