2016-11-27 48 views
-1

我被卡住了 - 需要一些幫助才能開始 - 只是碰到一堵磚牆。在python中爲平均值創建函數?

所以應該有兩個列表和一個表定義如下。

•參與者,演員姓名的字符串列表。對於每個i,使得0≤i≤len(Actors)-1,我們將Actor [i]稱爲第i個演員。

•電影,電影名稱的字符串列表。對於每個i,使得0≤i≤len(Films)-1,我們將Film [i]稱爲第i部電影。

•分數,其行對應於演員和列的表對應於電影。分數[i] [j]是如下定義的整數。

- 如果分數[i] [j] = -1,這意味着第i個演員不是第j個電影的明星。

- 如果分數[i] [j]≥0,那麼這是第j個電影的第i個演員的分數。您可以假設得分在0-100範圍內,不需要檢查數據的有效性。

我可以將上述結構定義爲固定在我的程序中,不需要請求用戶輸入它們。

那麼如何編寫一個函數,其參數是一個整數表A和一個正整數i。該函數應該返回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

嘗試一下。認爲問題可以解決 - 參考這個問題並根據需要進行修改,將問題分解爲更小的問題,然後嘗試解決這些問題,回到這裏解決遇到的問題,解決小問題。 stackoverflow.com/help/how-to-ask和http://stackoverflow.com/help/mcve。 – 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