2016-11-27 6 views
-1

私は立ち往生しています - 始めるにはちょっとした壁があります。平均化のためにPythonで関数を作成していますか?

したがって、次のように2つのリストと1つのテーブルが定義されています。

•アクター、アクター名である文字列のリスト。 0≤i≤len(Actors)-1のような各iについて、Actor [i]をi番目のアクターと呼ぶ。

•フィルム、フィルム名である文字列のリスト。 0≤i≤len(Films)-1である各iについて、i番目のフィルムとしてフィルム[i]を参照する。

•スコア、行がアクターに対応し、列がフィルムに対応しています。スコア[i] [j]は、以下のように定義される整数です。

- Scores [i] [j] = -1の場合、これはi番目のアクタがj番目のフィルムのスターではないことを意味します。

- Scores [i] [j]≥0の場合、これはj番目の映画のi番目のアクタのスコアです。スコアが0〜100の範囲にあると仮定すると、データの有効性を確認する必要はありません。

私は上記の構造を私のプログラムで固定していると認められているので、ユーザに入力を要求する必要はありません。

したがって、引数が整数Aと正の整数のテーブルAである関数を書くにはどうすればいいですか?この関数は、A [i](Aのi行)の負でない項目の平均を返します。

おかげジェマ

+0

あなたは[forループ](https://docs.python.org/3必要になる場合があります試してみてください/tutorial/controlflow.html#for-statements);これはあなたが[関数を定義する]方法です(https://docs.python.org/3/tutorial/controlflow.html#defining-functions)。 [sum()](https://docs.python.org/3/library/functions.html#sum)が役立ちます。あなたのテーブルはリストのリストになることができます - ここにどのように[リスト](仕事)(https://docs.python.org/3/tutorial/introduction.html#lists)がありますか。 – wwii

+0

何かを試してみてください。問題を解決できると思います - これを参照し、必要に応じて修正してください。問題を小さな問題に分割し、それらの問題を同時に解決しようとします。 – wwii

答えて

1
import numpy as np 

actors = ['Brad Pitt', 'George Clooney', 'Matt Damon', 'Rowan Atkinson'] 

films = ['Oceans 11', 'Oceans 12', 'Bean'] 

actors_dimension = (len(actors)) 

longest_actor_length = len(max(actors, key=len)) 
longest_film_length = len(max(films, key=len)) 
longest_overall_length = max(longest_actor_length, longest_film_length) 
padding = longest_overall_length 

scores_width = len(films) + 1 
scores_height = len(actors) + 1 

scores = [[' '.rjust(padding) for x in range(scores_width)] for y in range(scores_height)] 

#Setting films 
for i, film in enumerate(films): 
    scores[0][i+1] = film.rjust(padding) 

#Setting actors 
for i, actor in enumerate(actors): 
    scores[i+1][0] = actor.rjust(padding) 

#Filling data 
#Brad Pitt 
scores[1][1] = '1'.rjust(padding) 
scores[1][2] = '1'.rjust(padding) 
scores[1][3] = '-1'.rjust(padding) 

#George Clooney 
scores[2][1] = '1'.rjust(padding) 
scores[2][2] = '1'.rjust(padding) 
scores[2][3] = '-1'.rjust(padding) 

'Matt Damon' 
scores[3][1] = '1'.rjust(padding) 
scores[3][2] = '1'.rjust(padding) 
scores[3][3] = '-1'.rjust(padding) 

'Rowan Atkinson' 
scores[4][1] = '-1'.rjust(padding) 
scores[4][2] = '-1'.rjust(padding) 
scores[4][3] = '1'.rjust(padding) 

def average_of_row(row): 
    if((row > actors_dimension) or (row <= 0)): 
    print('That row is not in the table or has no actor') 
    else: 
    actor = (scores[:][row]).pop(0).strip() 
    actors_scores = [int(x) for x in ((scores[:][row]))] 
    print("%s's average score is: %f" % (actor, float((sum(actors_scores)/len(actors_scores))))) 

print(np.matrix(scores)) 

average_of_row(1) #Brad Pitt 
average_of_row(4) #Rowan Atkinson 

出力:

[['    ' '  Oceans 11' '  Oceans 12' '   Bean'] 
['  Brad Pitt' '    1' '    1' '   -1'] 
['George Clooney' '    1' '    1' '   -1'] 
[' Matt Damon' '    1' '    1' '   -1'] 
['Rowan Atkinson' '   -1' '   -1' '    1']] 
Brad Pitt's average score is: 0.333333 
Rowan Atkinson's average score is: -0.333333 

は、それがhere!

+0

ありがとう、これは本当に役に立ちます - 私は思考とコーディングを持っています。ありがとう – NoobyD

関連する問題