和の計算法5通り あなたはいくつ思いつく? python初心者用問題
問 「1から10までの和を計算」するプログラムをpythonで5通り作成せよ。
以下答え。プログラムの結果は全て 55
forを使い、C言語風にやる (level1)
s = 0 for i in range(11): s+=i print(s)
説明
range(引数) で0, 1,..., 引数-1 というリストが手に入る
sumを使う (bestなコード) (level2)
s = sum(range(11)) print(s)
ジェネレータ式を使用(level3)
s = sum(i for i in range(11)) print(s)
説明
ジェネレータ式とは、リスト等を受け取る関数の引数にfor文を直接書くやり方のこと
式 for ターゲットリスト in 反復可能オブジェクト
の形で得られる。
reduce(畳み込み)を使用(level4)
from functools import reduce s = reduce(lambda x,y: x+y, range(11)) print(s)
説明
reduce(適用する関数, 反復可能オブジェクト)
で反復オブジェクトに繰り返し関数を適用した結果を返す。関数はラムダ式でもよい。
番外編 等差数列の公式を使う
s= (1+10)/2*10 print(s)
説明
和=(初項+末項)/2*項数