2016-09-27 5 views
0

ここでは質問ですが、私はパラメータとして数字のリストをとり、そのリストの数字のサンプル平均を返す関数sample_meanを定義しようとしています。ここまで私がこれまで持っていたことはありますが、私はそれがまったく正しいとは確信していません。リストをパラメータとして持つ関数を書く方法

def sample_mean(list): 
    """ (list) -> number 
    takes in a list of numbers as a parameter and returns the sample mean of the the numbers in that list 
    sample_mean = 
    sample_mean = 
    """ 

    mean = 0 
    values = [list] 
    for list in values: 
     print('The sample mean of', values, 'is', mean(list)) 
+2

* list *を定義するために引数として 'list'を使用しないでください。これは組み込みの[list](https://docs.python.org/3/library/functions.html#func-list)をシャドウします。 – idjaw

+2

あなたのメソッドがリストを受け取った場合、 'values = [list]'は意味をなさない。あなたがあなたのリストに渡す引数はすでにリストになっているはずなので、そこで何をしているのかは必要ありません。たとえば、リストにメソッドに '[1,2]'が渡されている場合、 'values = [list]'はそれを '[[1,2]]に変換します。あなたがしたくないことは間違いありません。 – idjaw

+0

ありがとうございました! –

答えて

1

まず、listを名前として使用しないでください。これは、組み込みのlistクラスが宣言されているスコープに対してシャドウ/非表示になるためです。リストの値を記述する名前を使用してください。この場合はsamplesが良い名前かもしれません。

def sample_mean(samples): 
    total = 0 
    for value in samples: 
     total = total + value 
    return total/float(len(samples)) 

やPythonのsum()機能を利用することにより、独自のループを書く回避短いバージョン:

def sample_mean(samples): 
    return sum(samples)/float(len(samples)) 

このような関数を呼び出す関数は、このようなものを用いて実施することもできます

>>> print(sample_mean([1,2,3,4,5])) 
3.0 

除算操作で小数部が失われないように、float()を使用することに注意してください。これはデフォルトで整数除算を使用するPython 2の唯一の問題です。また、あなたのスクリプトの先頭にこれを追加することができます。

from __future__ import division 

あなたはあなただけあなたがfloat()を削除し、上記を無視することができるのPython 3をサポートする必要があることが確実な場合。

+0

ありがとう、これは非常に有用な情報です。私はすべてコーディングとPythonの新機能です。 –

0

@idjawにより、上述したように、(例えば)listrを使用する代わりに、パラメータとしてlistを使用しません。あなたのvalues = [list]は間違っていて(@idjawでも述べられています)、削除する必要があります。

また、PEP257によると、"(list) -> number"をドキュメントストリングに使用しないでください。これは、組み込み関数でのみ使用する必要があるためです。

最後に、ループはfor l in listr:のようになり、平均変数に値を追加します。リスト内の値の数で除算し、結果を出力します。

+0

私はこのようなステートメントを印刷する答えについて質問があります。「[samples]のサンプル平均は[sample_mean]です。」これがありますが、サンプルがnum :print( 'サンプルの平均'、samples、 'is、sample_mean)誰かが何が間違っているのか説明できますか? –

+0

は 'sample_mean'と' int'ですか?それでは、なぜあなたはサンプルで数えられるのですか? – Corgs

+0

いいえsample_meanはサンプルの平均です –

関連する問題