AIZU ONLINE JUDGE ITP1_8_Bをpythonで解いてみた

python

本サイトAIZU ONLINE JUDGE ITP1_8_B へはこちらから

目次

問題:数字の和

与えられた数の各桁の和を計算するプログラムを作成して下さい。

Input

複数のデータセットが入力として与えられます。各データセットは1つの整数 x を含む1行で与えられます。

x は 1000 桁以下の整数です。

x が 0 のとき入力の終わりとします。このデータセットに対する出力を行ってはいけません。

Output

各データセットに対して、x の各桁の和を1行に出力して下さい。

Sample Input

123
55
1000
0

Sample Output

6
10
1

解答例

while True:
    str_x = input()
    if str_x == "0":
        break

    ans = 0
    for n in str_x:
        ans += int(n)
    print(ans)

解説

以下のように解いていきます。

  1. while文を使用し、入力処理を行う
  2. 与えられた数の各桁の和を計算し、表示する

while文を使用し、入力処理を行う

ある条件まで入力を続ける場合はwhile文とif文を組み合わせて、入力処理を行います。

# if文の条件式に当てはまるまでループ処理を続ける
while True:
    処理
    # この条件式に当てはまる場合、break文でループ処理を終了する
    if 条件式:
        break

whileループ内でinput関数を使用し、キーボードからの入力を文字列として受け取ります。なぜ文字列として受け取るかは、2.与えられた数の各桁の和を計算し、表示するでの各桁の足し算の際にfor文のイテラブル(繰り返し可能なオブジェクト)として有効だからです。このように文字列だとfor文で一つずつ文字を取り出すことができます。

そして、”0″が入力された場合にbreak文で処理を終了します。

# 終了条件に当てはまるまで処理を続ける
while True:
    # キーボードからの入力を文字列として受け取る
    str_x = input()
    # str_xが0の場合にbreak文で処理を終了
    if str_x == "0":
        break

※サイト内「AIZU ONLINE JUDGE ITP1_1_Bをpythonで解いてみた」の、input関数とはに使用方法が書かれておりますのでよかったらご覧ください。

※サイト内「AIZU ONLINE JUDGE ITP1_3_Cをpythonで解いてみた」の、break文とはに使用方法が書かれておりますのでよかったらご覧ください。

与えられた数の各桁の和を計算し、表示する

ここでは、1.while文を使用し、入力処理を行うで文字列として受け取った数値を整数型に変換し、計算して表示します。

まず、for文のイテラブルに1.while文を使用し、入力処理を行うで文字列型として受け取った変数を設定します。
※文字列は一文字ずつ取り出す事ができるので、for文のイテラブルとして使用できます。

そこから一文字ずつ取り出して変数nに設定し、nをint関数で囲み整数型として結果表示用変数ansに足していきます。

全て取り出した後、print文で表示します。

# 結果表示用変数ansを用意
ans = 0
# str_xから一文字ずつnに設定
for n in str_x:
    # nを整数型にしてansに足していく
    ans += int(n)
# 各桁の総和ansを表示する
print(ans)

※サイト内「AIZU ONLINE JUDGE ITP1_3_Aをpythonで解いてみた」の、for文とはに使用方法が書かれておりますのでよかったらご覧ください。

最後に、もう一度プログラムを確認してみましょう。

# 終了条件に当てはまるまで処理を続ける
while True:
    # キーボードからの入力を文字列として受け取る
    str_x = input()
    # str_xが0の場合にbreak文で処理を終了
    if str_x == "0":
        break

    # 結果表示用変数ansを用意
    ans = 0
    # str_xから一文字ずつnに設定
    for n in str_x:
        # nを整数型にしてansに足していく
        ans += int(n)
    # 各桁の総和ansを表示する
    print(ans)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

雇われのシステムエンジニアです。
普段は車載ECUのセキュリティー分野に従事しております。

■保有資格
Salesforce 認定 Platform アプリケーションビルダー
Salesforce 認定 Platform デベロッパー

コメント

コメントする

目次