整数の各桁の和を求める方法について。
とあるサイトの問題を解いていて、題意のコードをすっきり書けたので紹介します。 (その問題はもう一工夫必要です)
Pythonでは少ない記述で計算することができます。
各桁の合計を求める
"""
各桁の合計値を計算
"""
def digitSum(n):
# 数値を文字列に変換
s = str(n)
# 1文字ずつ数値化し配列にする。
array = list(map(int, s))
# 合計値を返す
return sum(array)
print(digitSum(123))
# => 6
print(digitSum(35829))
# => 27
digitSum(n))
は数値を受け取り各桁の合計値を返します。
数値を文字列にしてから、list(map(int, s))
で一文字ずつ整数のリストに変換する。
最後にsum()
で合計を計算しています。
ワンライナーだと
n = 123456
result = sum(list(map(int, str(n))))
# => 21
指定の桁になるまで各桁の合計を求める
指定桁数になるまで再帰的に計算を繰り返してみます。
"""
各桁の合計値を計算
桁数が1になるまで繰り返す
"""
def digitSum(n):
# 桁数を判定する
if len(str(n)) is 1:
return n
dst = sum(list(map(int, str(n))))
return digitSum(dst)
if __name__ == "__main__":
n = 12345
result = digitSum(n)
print(int(result)) # 15
if文の数値を変えると任意の桁数まで求めます。
Python:ファイルダウンロードの進行状況とファイルサイズを表示する方法。urllib
Pythonschedule2024-02-27
【Python】tqdmでforの進捗状況を表示する
PythonColabolatoryschedule2021-02-16
学習済みの日本語単語ベクトルをColabolatoryで試してみる
自然言語処理PythonColabolatoryschedule2021-02-04
Unity ML-Agentsで新しく学習環境を作る
Unity機械学習C#PythonDeepLearningschedule2021-01-22
27. 内部リンクの除去
自然言語処理100本ノックPythonschedule2020-03-17