これは携帯電話で入力しているので、「 yearString 」の代わりに「 y 」を使用します。
if len(y) == 4:
x = int(y[3]) + int([2]) + int(y[1]) + int([0])
y = str(x)
if len(y) == 3:
x = int([2]) + int(y[1]) + int([0])
y = str(x)
if len(y) == 2:
x = int(y[1]) + int([0])
y = str(x)
answer = int(y)
合計が複数の桁の場合、後の if ステートメントでそれを処理する方法を確認してください。それでは、純粋な数学を使用して同様のコードを書きましょう。
x = int(yearString)
d3 = x // 1000
x %= 1000
d2 = x // 100
x %= 100
d1 = x // 10
d0 = x % 10
answer = d3 + d2 + d1 + d0
編集:考えてみたところ、これを行うための最良の方法がわかると思います。このための完全なコードは書きません。
モジュラス演算子を 10 で使用すると、一番下の桁が引き出されます。次に、10 による整数除算を使用する場合は、下の桁を削除します。これを while ループで実行し、すべての数字がなくなるまで繰り返します。最後の 10 で除算した後、数値はゼロになります。これを行う関数を作成し、合計が 10 未満 (1 桁になる) になるまで while ループから呼び出します。
編集:さて、私は完全なコードを書いたほうがいいと思います:
y = int(yearString)
x = 0 # we will accumulate the sum in x
while y != 0:
x += y % 10 # add one digit
y //= 10 # discard one digit
if y == 0 and x > 10:
# We have pulled out all the digits from y, but x has
# multiple digits. Start over so we can sum the digits
# from x.
y = x
x = 0
answer = x