2016-09-14 17 views
0

2次元リストからいくつかの数字を印刷しようとしています。2次元リストのpython

学生1人あたりの平均成績をプリントする機能があります。もう1つの関数は、すべての生徒の平均を一緒に出力します。

これらの番号にアクセスして機能させるにはどうすればよいですか?私は4つの平均を取ってから/ 4に行くことができるように、それらをリストに追加しようとしましたが、最後の平均の数だけを追加しています。

studentgrades = [ [95, 92, 86],[66, 75, 54],[89, 72, 100],[34, 0, 0] ] 
def average_per_student(studentgrades): 
    child = 0 
    lst_average = [] 
    for cijfers in studentgrades: 
     average = int(sum(cijfers) /3) 
     child += 1 
     result = 'child %d: gemiddelde %d' % (child, average) 
     lst_average.append(result) 
     vg = [] 
     print(average) 
     vg.append(average) 

    print(vg) 
    return lst_average 


def average_of_all_students(studentgrades): 
    pass 

resultaat1 = average_per_student(studentgrades) 
# print(resultaat1) 
resultaat2 = average_of_all_students(studentgrades) 
# print(resultaat2) 

答えて

1

あなたはそれを毎回再初期化されないように、forループの外vg = []を移動する必要があります。それからあなたはそれを一度初期化し、学生一人の要素を追加し、最後に4つの学生平均の完全なリストを持つでしょう。

+0

ありがとう、私はそれを見ていないために気が気になる。 1つのprint文で複数の値を返す方法はありますか?私はprint(resultaat1)のコメントを削除して、私の関数で返ってきたすべての平均を生徒から印刷したいと思います。 –

+0

私はあなたの質問をよく理解していません。タプルとして 'return(lst_average、vg)'を実行することによって 'lst_average'と' vg'の両方の値を返すことができます。その後、コールポイントを '(average_strings、average_values)= average_per_student(studentgrades) 'などのように更新する必要があります。 –

+0

私が達成しようとしているのは、print()を自分の関数に置くのではなく、リターンを使いたいのです。しかし、私がリターンを使うとき、print()と同じ値を得ることはできません。 –

関連する問題