Pythonで1からNまでの合計を算出する

Pythonの勉強を再開して復習しております。今回作成するのは、値を入力させ、1からその数字までの合計を計算するプログラムです。

例えば10と言う数字を入力すると、1+2+3+…+10の結果を返します。

コード

こちらがコードです。最初にCalculation 1と注釈のある方法で完成したものの、「ans = ans + i」の部分が格好悪く、他の方法を考えてCalculation 2と3を作りました。

num = int(input("What is the number you want to add up to? > "))

# Calculation 1
ans = 0
for i in range(num):
  ans = ans + i
ans = ans + num
print(f"Calc#1 Sum of numbers from 1 to {num} is {ans}")

# Calculation 2 with a list
numbers_list = [j for j in range(1, num + 1)]
ans2 = 0
for k in numbers_list:
  ans2 = ans2 + k
print(f"Calc#2 Sum of numbers from 1 to {num} is {ans2}")

# Calculation 3
ans3 = 0
for l in range(1, num + 1):
  ans3 = ans3 + l
print(f"Calc#3 Sum of numbers from 1 to {num} is {ans3}")

Calculation 1

最初に作ったのがこれです。range()で指定した数の回数だけ、0から繰り返されるのですが、例えば10という値を渡すと0から9まで繰り返されます。そうすると10を足すことができないと言うことに気が付いて最後に足す方法を取りました。

が、しかし、かなり不格好です。こんなやり方が最適解と思わず他の方法を模索しました。

Calculation 2

リスト型変数を使う方法を思いつきました。Calculation 1で最後にひとつだけ足し算をするのが格好悪かったので、先に追加する対象の数字が入ったリストを作成しようと言う魂胆です。

まぁこれでも目的のプログラムは作れるのですが、どこか冗長な気がしました。

ただ、range(m, n)でmからnまで繰り返す、と言うことができることを思い出してここから導入してます。

Calculation 3

リスト型にわざわざしなくても良いのではないかと思って作ったのはこちらです。私のレベル(Python初心者)では精一杯のコードですがたった3行で作れてます。

結果

Google Colabによる実行結果がこちらです。

上達に必要な事

私が語るのもまだまだおこがましいですが、アルゴリズムって答えが1つじゃないんですよね。色々な方法で同じ結果の得られるプログラムを作ることで上達につながるかも知れません。

今回の私の場合、Calculation 1を作った段階でしっくりこず、その後にrange(m, n)の使い方を思い出したり、リスト型の変数の存在を思い出し、内包表記の復習にもなりました。

Calculation 2は結果的に今回の最適解ではありませんでしたが、この試行錯誤を経てCalculation 3というわずか3行のコードが作成できました。

めっさん
  • めっさん
  • 当サイトの管理人。ニューヨークの大学を飛び級で卒業。その後日系企業でグローバル案件に携わる。大小様々な企業を転々としながら、マレーシアやアメリカへの赴任経験を持つ。バイリンガルITエンジニアとしていかに楽に稼ぐか日々考えている。年齢は秘密だけど定年も間近かな。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です