2016-10-11 7 views
-1

私はPythonには比較的新しいので、私のコードでは妥協しないことをお詫び申し上げます。 私はいくつかの値を返す関数を持っています。私はこの関数をn回繰り返してn回の繰り返しの出力値の平均値を求めます(おそらく、新しい関数を定義することなく)。これはどうすればできますか?例えば:関数の出力値を平均化する方法

def flip_coin(coins): 

    pr_head = 1 
    pr_tail = -1 
    options = (pr_head, pr_tail) 
    simulation = [[random.choice(options) for x in range(10)] for y in range(coins)] 

    rep = [i.count(1) for i in simulation] 
    m = min(rep) 
    ind_m = rep.index(m) 

    c_min = simulation[ind_m] 
    v_min = c_min.count(1)/10 

    return v_min 

for i in range(n): 
    flip_coin(coins) 
    #take average over(v_min) 

Iは、関数スコープの外「V_MIN」にアクセスすることはできませんしかし、私は(上記のように、ループの正確なと)機能の内部関数を繰り返すとき、私はエラーを取得:

RecursionError: maximum recursion depth exceeded while calling a Python object. 
+0

あなたのいない関数から任意の値を返す 'foo'、デフォルトの'なしにこの答えを平均見つけることができますので、我々はそれらに平均を計算することができます呼び出し、収集'。 –

+0

最小限の場合は、実際のコードを掲載してください。そうでない場合は、最小限のバージョンを作成してください。また、完全なトレースバックを、または再帰エラーの場合には、その関連部分をポストします。また、デバッガがなくても関数を返さないと(+その他のいくつかのケースで)関数の外で 'some_output'にアクセスすることはできません... –

+0

[MCVE]を含める必要があります。 _実際のコード_しかし、あなたが含まれている以上。 –

答えて

0

関数呼び出し結果を割り当てていません。まず、すべての機能が

v_min_list = [flip_coin(coins) for i in range(n)] 

が、我々はFinding the average of a list

averag_v_min = sum(v_min_list)/float(len(v_min_list)) 
1

は、あなたがそれをしたいか、あなたが後でそれをアクセスするために、変数に戻り値を代入する必要があるということです:

for i in range(n): 
    v_min2 = flip_coin(coins) 
    print v_min2 

あなたは毎回の平均をしたい場合は、あなたが簡単に行うことができ、関数を呼び出す:

average_list = [] 
for i in range(10): 
    average_list.append((flip_coin(coins))) 

print (sum(average_list)/len(average_list)) 
関連する問題