質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

1434閲覧

指定した桁になるまで各桁の数を足したい

pico_______3

総合スコア13

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/03/26 04:10

前提・実現したいこと

python言語で誕生日を入力すると、ソウルナンバーを出すものを作っています。
そのうちのソウルナンバーを計算する部分に苦戦しています。
ソウルナンバーは自分の生年月日を一桁になるまで、各桁を足していくというものです。

例えば、2022年11月22日生まれのとき。2+0+2+2+1+1+2+2と計算し、ソウルナンバーはとなります。
今の段階では、例の場合2022+11+22で2055と出るところまで出来ています。
質問内容はその後の動きとして考えています。

一桁になるまで各桁を合計していきたいのですが、以下のエラーメッセージが発生しました。
コードはネットのものを参考にしています。
解決策を教えていただけると幸いです。

発生している問題・エラーメッセージ

Traceback (most recent call last):
File "C:.py", line 11, in <module>
result = digitSum(s)
File "C:
.py", line 3, in digitSum
if len(n) is 1:
TypeError: object of type 'int' has no len()

該当のソースコード

このコードの場合、2055を各桁で合計する
2+0+5+5=12
1+2=3
結果3と出せるようにしたい

python

1s1 = 2055 2def digitSum(s): 3 if len(n) is 1: 4 return n 5 array = list(map(int, list(s))) 6 return digitSum(str(sum(array))) 7 8if __name__ == "__main__": 9 n = s1 10 s = str(n) 11 result = digitSum(s) 12 13 print(int(result))

参考サイト

https://www.suzu6.net/posts/30/

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

ソウルナンバーは自分の生年月日を一桁になるまで、各桁を足していくというものです。

「9で割ったあまり(ただし0のときは9にする)」を計算すれば、何も考えずに一発で済みます。

数字根 - Wikipedia

投稿2019/03/26 04:12

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pico_______3

2019/03/26 05:32

そのような仕組みになっていたことを知りませんでした。 試しにやってみたところ簡単にできました。 助かりました、ありがとうございました。
guest

0

s1 = 2055だと整数型intなので長さの概念はないです。s1 = "2055"として文字列型(str)にしましょう。

毎回str←→int変換して長さ1になるまでやるか、len以外の方法で桁数を調べるかのどちらかです。

投稿2019/03/26 04:12

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pico_______3

2019/03/26 05:35

回答ありがとうございます。 そのような違いがあったのですね。勉強になりました。 桁数の長さについては参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問