def avg(n):
count=0
sum=0
for var in range(n):
count+=1
sum+=var
return (sum/count)
print (avg(5))
これは、for ループを使用して 1 から n までの整数の平均を求める試みです。何が欠けていますか?
2つの理由。まず、0 から 4 までの数値を合計します (包括的)。を実行して修正するrange(1,n+1)
か、に変更することができますsum += var + 1
2 番目の理由は、整数除算がデフォルトで使用されることです。先頭に追加することで浮動小数点除算を強制できます。
from __future__ import division
またはローカルで行うreturn sum/float(count)
ドキュメントの引用:
範囲(開始、停止[、ステップ])
開始引数が省略された場合、デフォルトは 0 です。完全な形式は、プレーンな整数のリストを返します [開始、開始 + ステップ、開始 + 2 * ステップ、...]。step が正の場合、最後の要素は start + i * stepより小さい stopです。
つまり、range()
Python では包括的ではありません。これは、コードに off-by-one エラーがあることを意味します。次のようになります。
def avg(n):
count=0
sum=0
for var in range(1, n+1):
count+=1
sum+=var
return (float(sum)/count)
print (avg(5))